Cómo agregar dinámicamente controles a un formulario con Visual Basic 6.0

Seleccione idioma Seleccione idioma
Id. de artículo: 190670 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Visual Basic 6.0 permite agregar dinámicamente el control a un formulario en tiempo de ejecución mediante el nuevo método Add de la colección de controles. En este artículo muestra cómo agregar dinámicamente intrínsecos y controles ActiveX.

Más información

En el ejemplo siguiente se agrega dinámicamente dos intrínsecos y un control ActiveX a una aplicación en tiempo de ejecución. El ejemplo muestra cómo programar los eventos de un control agregado dinámicamente. Si agrega dinámicamente un control que no se hace referencia en el proyecto, deberá agregar clave de licencia del control a la colección Licenses. Para obtener más información en la colección Licenses, consulte la sección referencias de este artículo.

Al hacer referencia a propiedades del control agregado dinámicamente, debe utilizar la palabra clave Object acceso a las propiedades del control. Si no utiliza la palabra clave Object, sólo podrá tener acceso a las propiedades de extensor del control.

Intentando obtener acceso las propiedades de extensor sin utilizar la palabra clave Object, provoca el error 438 siguientes:
"Objeto no admite esta propiedad o método".
Cuando un control ActiveX se agrega dinámicamente mediante el objeto VBControlExtender y WithEvents en la instrucción declare, deberá utilizar el método ObjectEvent para todos los eventos del control de código. Si declara un control intrínseco WithEvents, obtendrá todos los métodos de evento estándar para el tipo de control que se ha declarado. Puede ver esto agregando siguiente declara instrucción en la ventana código y, a continuación, comprobar el desplegable de eventos para la variable declarada en la ventana código:
Dim WithEvents cmdMyCommand as VB.CommandButton
				

Pasos para crear proyecto de ejemplo

  1. Cree un nuevo proyecto EXE estándar. Se creará Form1 de manera predeterminada.
  2. Agregue el código siguiente en la ventana de código de Form1:
    Option Explicit
    ' If you are adding an ActiveX control at run-time that is
    ' not referenced in your project, you need to declare it
    ' as VBControlExtender.
    Dim WithEvents ctlDynamic As VBControlExtender
    Dim WithEvents ctlText As VB.TextBox
    Dim WithEvents ctlCommand As VB.CommandButton
    
    Private Sub ctlCommand_Click()
       ctlText.Text = "You Clicked the Command button"
    End Sub
    
    Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)
       ' test for the click event of the TreeView
       If Info.Name = "Click" Then
          ctlText.Text = "You clicked " & ctlDynamic.object.selecteditem.Text
       End If
    End Sub
    
    Private Sub Form_Load()
       Dim i As Integer
       ' Add the license for the treeview to the license collection.
       ' If the license is already in the collection you will get
       ' the run-time error number 732.
       Licenses.Add "MSComctlLib.TreeCtrl"
    
       ' Dynamically add a TreeView control to the form.
       ' If you want the control to be added to a different
       ' container such as a Frame or PictureBox, you use the third
       ' parameter of the Controls.Add to specify the container.
       Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", _
                        "myctl", Form1)
       ' set the location and size of the control.
       ctlDynamic.Move 1, 1, 2500, 3500
    
       ' Add some nodes to the control.
       For i = 1 To 10
          ctlDynamic.object.nodes.Add Key:="Test" & Str(i), Text:="Test" _
                                            & Str(i)
          ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), _
                               Relationship:=4, Text:="TestChild" & Str(i)
       Next i
       
       ' Make the control visible.
       ctlDynamic.Visible = True
    
       ' add a textbox
       Set ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1)
       ' Set the location and size of the textbox
       ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
                     1, 2500, 100
    
       ' Change the backcolor.
       ctlText.BackColor = vbYellow
    
       ' Make it visible
       ctlText.Visible = True
    
       ' Add a CommandButton.
       Set ctlCommand = Controls.Add("VB.CommandButton", _
                        "ctlCommand1", Form1)
    
       ' Set the location and size of the CommandButton.
       ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
                        ctlText.Height + 50, 1500, 500
    
       ' Set the caption
       ctlCommand.Caption = "Click Me"
    
       ' Make it visible
       ctlCommand.Visible = True
    End Sub
    						
  3. Guarde y ejecute el proyecto. Intente hacer clic en el CommandButton y en distintos nodos en TreeView. El cuadro de texto mostrará a hacer clic en.

Referencias

Para obtener información adicional, consulte en contacto con el siguiente artículo en Microsoft Knowledge Base:

188577¿Qué es el licencias colección utilizados para cómo?

También buscar ayuda en pantalla para los siguientes temas:
  • Método Add (conjunto de controles)
  • Método Add (conjunto de licencias)

Propiedades

Id. de artículo: 190670 - Última revisión: jueves, 01 de julio de 2004 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palabras clave: 
kbmt kbctrlcreate kbfaq kbhowto KB190670 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 190670

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com