Crear un control de tipo combo mediante código


Código VB6:

set lControl = gForm.Controls.Add("AhoraOCX.ComboUsuario", "Pers_MiControlCombo", Gform.controls("TabDatos"))
With lControl 
     .C1Nombre = "NombreCol1"
     .C1TipoDato = 2
     .C1Anchura = 3000
     .C2Nombre = "NombreCol2"
     .C2TipoDato = 2
     .C2Anchura = 800
     .CActiva = 2
     .NColumnas=2
     .Descripcion="Select Col1, Col2 from VistaOTabla order by Col1"
     .Formato = "Mayusculas y Minusculas"
     .TipoDato = "String"
     .ObjOrigen = "EObjeto"
     .ObjPOrigen = "PropiedadDeObjeto"
     .visible = True
     .CaptionVisible = True
     .CaptionControl = "CaptionEtiqueta"
     .CaptionWidth = 1800
     .Enabled = True
     .CaptionLink = true
     .move 0,0,3800,300
     .AplicaEstilo 
     .TabStop=True
     .TabIndex = 25
End With

--- Los valores diponibles para definir el tipo de dato de una columna de un combo son:
0 Variant
11 Boolean
17 Byte
2 Entero
3 Long
4 Simple
5 Doble
6 Moneda
7 Fecha
8 Texto


Código C#:

Para este ejemplo crearemos un nuevo combo en frmDelegaciones cuya segunda columna será la columna activa (IdCliente) mediante el método CrearControl del propio ComboUsuario.


using AhoraSistema;
using AhoraOCX;
using AhoraCore;

namespace AhoraScriptsPantalla
{
  public class AhoraCl_frmDelegaciones : AhoraOCX.AhoraBaseScript
  {

        private IComboUsuario pIdCalendario;

        public void Initialize()
    {

(gForm.Controls["Botonera"] as ICntBotonera).ActivarScripts = true;

      // Captura de control "IdDelegacionCli". Usaremos su "Parent" de contenedor para el campo que vamos a crear, así como recuperar sus propiedades relativas a dimensión y posición
            pIdCalendario = (IComboUsuario)gForm.Controls["IdCalendario"];

            IComboUsuario claseComboUsuario = new ComboUsuario();
            IComboUsuario campoPers = (IComboUsuario)claseComboUsuario.CrearNuevoControl(
                gForm,                          // Formulario
                "persComboUsuario",                   // NombreControl
                "C.Pers:",                        // Caption
                pIdCalendario.Left,                    // Posición horizontal (Left)
                pIdCalendario.Top + pIdCalendario.Height + 5,      // Posición vertical (Top)
                210,                          // Ancho (en píxeles)
                20,                            // Alto (en píxeles)
                (IControl)pIdCalendario.Parent,              // Control Contenedor
                true,                          // ¿Caption visible?
                ETipoDato.String,                    // Tipo de dato
                EFormatoCampo.NoEstablecido,                            // Formato de campo
                63,                            // Ancho de etiqueta (en píxeles)
                19,                            // Índice de tabulación
                "SELECT Cliente, IdCliente FROM Clientes_Datos",        // SQL del combo
                2,                            // Nº de columnas
                2,                                                      // Nº de columna activa
                "Cliente",                                              // Nombre campo columna 1
                ETipoDatoColumnaCombo.Texto,                            // Tipo de dato columna 1
                150,                                                    // Anchura columna 1 (en píxeles)
                "Nombre Cli.",                                           // Descripción columna 1
                "IdCliente",                                            // Nombre campo columna 2
                ETipoDatoColumnaCombo.Texto,                           // Tipo de dato columna 2
                75,                                                     // Anchura columna 2 (en píxeles)
                "Id."                                                  // Descripción columna 2
                );
        }   

    public void Botonera_BeforeExecute(ICntBotonera aBotonera, IAhoraTool aBoton, ref Valor aCancel)
    {
      IComboUsuario comboPers = (gForm.Controls["persComboUsuario"] as IComboUsuario);
      AhoraCore.VBA.Interaction.MsgBox(comboPers.Text);
    }

  }
}