labels dinamicas
necesito crear etiquetas (labels) en forma dinamica (en tiempo de ejecucion). se puede hacer? cómo?.
Desde ya.. muchas gracias
Desde ya.. muchas gracias
El modo que conozco es
Colocas una label, con index 0, a modo de elemento inicial de un array de labels. Supongamos que tenemos una Label1 con Index = 0, asà creamos una instancia
Dim Indice as Integer
' ver cuál es el proximo indice
Indice = Label1.Ubound + 1
Load Label1(Indice)
' colocarla en alguna posicion, se crean en el mismo
' lugar que el del elemento inicial
Label1(Indice).Left = PosX
Label1(Indice).Top = PosY
Label1(Indice).Caption = ..........
Label1(Indice).Visible = true
La tenés que poner visible ya que se crean invisibles
Probalo y cualquier problema avisame
Saludos
Colocas una label, con index 0, a modo de elemento inicial de un array de labels. Supongamos que tenemos una Label1 con Index = 0, asà creamos una instancia
Dim Indice as Integer
' ver cuál es el proximo indice
Indice = Label1.Ubound + 1
Load Label1(Indice)
' colocarla en alguna posicion, se crean en el mismo
' lugar que el del elemento inicial
Label1(Indice).Left = PosX
Label1(Indice).Top = PosY
Label1(Indice).Caption = ..........
Label1(Indice).Visible = true
La tenés que poner visible ya que se crean invisibles
Probalo y cualquier problema avisame
Saludos
UTILIZA LA INSTRUCCION "LOAD" DE VISUAL BASIC.
PARA QUE FUNCIONE LO UNICO QUE TIENES QUE HACER ES ESTABLECER LA PROPIEDAD "Index" DEL OBJETO QUE DESEAS DUPLICAR A (0)...
EJEMPLO.
SITUA UN CONTROL Label1(0) EN UN FORMULARIO EL CODIGO QUE SIGUE PODRIAS SITUARLO EN EL EVENTO LOAD DEL FORMULARIO O EN EL EVENTO CLICK DE UN CONTROL COMMAND
...
Dim nCnt As Integer
For nCnt = 0 To 5
If nCnt >= 1 Then
Load Label1(nCnt)
Label1(nCnt).Caption = "Etiqueta " & Format(nCnt + 1, "00")
'+++ ESTABLEMOS SU POSICION
Label1(nCnt).Left = Label1(nCnt - 1).Left
Label1(nCnt).Top = Label1(nCnt - 1).Top + Me.ScaleY(6, vbMillimeters, vbTwips)
End If
'+++ ESTABLECEMOS SU ANCHO EN RELACION CON EL TEXTO DEL CAPTION
If Label1(nCnt).Width < Me.TextWidth(Label1(nCnt).Caption) + Me.ScaleX(6, vbMillimeters, vbTwips) Then
Label1(nCnt).Width = Me.TextWidth(Label1(nCnt).Caption) + Me.ScaleX(6, vbMillimeters, Me.ScaleMode)
End If
Label1(nCnt).Visible = True
Next
...
OBSERVARAS COMO SE GENERAN DE FORMA DINAMICA CINCO ETIQUETAS EN TIEMPO DE EJECUCION
UN SALUDO
PARA QUE FUNCIONE LO UNICO QUE TIENES QUE HACER ES ESTABLECER LA PROPIEDAD "Index" DEL OBJETO QUE DESEAS DUPLICAR A (0)...
EJEMPLO.
SITUA UN CONTROL Label1(0) EN UN FORMULARIO EL CODIGO QUE SIGUE PODRIAS SITUARLO EN EL EVENTO LOAD DEL FORMULARIO O EN EL EVENTO CLICK DE UN CONTROL COMMAND
...
Dim nCnt As Integer
For nCnt = 0 To 5
If nCnt >= 1 Then
Load Label1(nCnt)
Label1(nCnt).Caption = "Etiqueta " & Format(nCnt + 1, "00")
'+++ ESTABLEMOS SU POSICION
Label1(nCnt).Left = Label1(nCnt - 1).Left
Label1(nCnt).Top = Label1(nCnt - 1).Top + Me.ScaleY(6, vbMillimeters, vbTwips)
End If
'+++ ESTABLECEMOS SU ANCHO EN RELACION CON EL TEXTO DEL CAPTION
If Label1(nCnt).Width < Me.TextWidth(Label1(nCnt).Caption) + Me.ScaleX(6, vbMillimeters, vbTwips) Then
Label1(nCnt).Width = Me.TextWidth(Label1(nCnt).Caption) + Me.ScaleX(6, vbMillimeters, Me.ScaleMode)
End If
Label1(nCnt).Visible = True
Next
...
OBSERVARAS COMO SE GENERAN DE FORMA DINAMICA CINCO ETIQUETAS EN TIEMPO DE EJECUCION
UN SALUDO
