Pregunta: | 5026 - CONTROLES GENERADOS POR CODIGO |
Autor: | Raquel Redondo |
Hola: Cuando generas un control por codigo con Controls.Add , como se hace para que se lanzen los eventos correspondientes de ese control...?? Por ejemplo: Controls.Add("Vb.Label","milabel") ´... codigo para ese label Controls.Add("VB.Label","miotrolabel") ´codigo para el otro label En el formulario tengo ahora los dos labels... pero y ahora como hago por ejemplo para saber que ha hecho click en un label y no en el otro... o para saber que lo ha hecho sobre uno de los label?? Espero que con esta explicacion de mi duda sea suficiente para que se entienda lo que pregunto. Muchas gracias. |
Respuesta: | Jose Reynaldo Chavarria Quiñonez |
Raquelita:
Tenes dos opciones 1.- Declarar una variable tipo Label usando WithEvents la cual va a representar a cualquiera de los objetos (Label) luego programaticamente puedo asignar el valor de la variable a cualquier Label en el formulario y puedo detectar los eventos (pero de uno a la vez) Ejemplo: 'En el Formulario Dim WithEvents lbl As Label Private Sub Form_Load() Set lbl = Controls.Add("vb.Label", "Label1") With lbl .Left = 1500 .Top = 500 .Caption = "Testing" .Visible = True End With End Sub Private Sub lbl_Click() Select Case lbl.Name Case "Label1" 'Codigo MsgBox lbl.Name Case "Label2" 'Codigo MsgBox lbl.Tag End Select End Sub 2.- Utiliza un Arreglo de Controles y manejalos por el indice (Index) del control En la forma en Diseño debe estar un Objeto con indice 0 (Es mas facil teniendo el cero) en este caso "Label1(0)" [este fue creado en "Design Time" cambiando la propiedad Index de "" a "0" (sin las comillas)]. Para crear mas objetos como este se debe usar "Load" para eliminarlo se hace "Unload" (No se puede hacer Unload a el objeto creado en Design Time) Ejemplo: Private Sub Form_Load() For i = 1 To 3 Load Label1(i) With Label1(i) .Left = Label1(i - 1).Left + Label1(i - 1).Width .Visible = True End With Next End Sub Private Sub Label1_Click(Index As Integer%2 |