Creación de Objetos

gaby
10 de Enero del 2003
Necesito saber como puedo crear objetos (textbox, listbox, etc) en Visual Basic a través de código, es decir, llamar a una función que realice esa tarea.

¡Muchas Gracias!

javierbalk
10 de Enero del 2003
Dim C as Control

Set C = Controls.Add ("VB.TextBox", "[Un nombre]")
C.Visible = True
Set C = Controls.Add ("VB.Label", "[Un nombre]")
C.Visible = True
Set C = Controls.Add ("VB.CommandButton", "[Un nombre]")
C.Visible = True
...Etc.

o bien:

Dim T1 as TextBox
Dim T2 as TextBox
Dim L1 as Label

Set T1 = Controls.Add ("VB.TextBox", "[Un nombre]")
T1.Visible = True
Set T2 = Controls.Add ("VB.TextBox", "[Un nombre]")
T2.Visible = True
Set L1 = Controls.Add ("VB.Label", "[Un nombre]")
L1.Visible = True
...Etc.

Este código sirve sólo para la versión 6 de VB.
Si usas VB5 tendría que decirte otra cosa (usar arrays de controles, pero necesitas tener siempre un elemento de partida)

Espero que te haya orientado un poco.

Javier

Gerardo
10 de Enero del 2003
Me fue de gran utilidad la creación de objetos, solo que necesito meterlos dentro de un frame al crearlos.
Hay alguna manera de asignarles a q frame pertenecen?

Telemann
10 de Enero del 2003
Tu ejemplo está muy bien, quisiera preguntarte si es posible con éste método programar los eventos de estos controles o si sólo se pueden crear en ejecución y acceder a sus propiedades y métodos (en VB6). Salud.

javierbalk
10 de Enero del 2003
Hola Teleman:

Se pueden programar los eventos también.
Vamos a tomar el ejemplo del TextBox T1
Debes declarar a nivel de módulo:

Private WithEvents T1 As TextBox

Luego en algún lado:

Set T1 = Controls.Add ("VB.TextBox", "[Un nombre]")
T1.Visible = True

Agrega los procedimientos de los eventos:

Private Sub T1_Change()
' hacer algo
End Sub

Private Sub T1_KeyPress(KeyAscii As Integer)
' hacer algo
End Sub

'etc

Nota para los del foro: sería mejor que avisen por email cuando alguien responde a un mensaje, porque sino uno está obligado a entrar todos los días y ver si alguien le escribió a uno.
Este mensaje lo vi medio de casualidad.

Javier

jorge
10 de Enero del 2003
TuForm.Controls.Add (ProgID, Nombre, Contenedor)