Hola. Estoy haciendo un ActiveX que tiene que hacer y tener lo siguiente.
Lo unico que tiene que tener es un array de labels, inicialmente comienzo con uno solo, Label1(0), y despues los voy cargando dinamicamente con Load Label1(x), etc, etc, etc.
El problema esta en como trabajar con cada label individualmente.
Por ej: En un formulario pongo este ActiveX llamado ALabels.
y puedo hacer lo siguiente. ALabels.Add "NewLabel" y despues hacer, ALabels.Label(0).Caption = "1", ALabels.Label(1).Caption = "1",etc.
codigo de ejemplo:
'En un formulario con un label (Label1)
Dim Etiqueta(1) As VB.Label
Private Sub Form_Load()
Set Etiqueta(0) = Label1(0)
Etiqueta(0).Caption = "Label 1"
Load Label1(1)
Set Etiqueta(1) = Label1(1)
Etiqueta(1).Caption = "Label 1"
End Sub
El codigo de arriba sirve para un Formulario comun, cuando lo llevo a un ActiveX tambien funciona. Por ahora todo bien, el problema es cuando desde un formulario quiero llamar al objeto
Etiqueta(1) del ActiveX o sea: UserControl.Etiqueta(1).Caption. De echo esa instancia ni existe, lo cual esta bien porque esta declarada como Dim = Private, esa instancia es solamente vista por el activeX. Entonces lo que hice fue ponerla publica, pero ahi es donde falla. En cambio si no la pongo como un vector si que funciona.
En fin resumiendo: En un activeX tengo un arrays de labels. ¿como puedo hacer para poder manejarlos desde un formulario?
'Formulario
Private Sub Form_Load()
UserControl.Label1(0).Caption = "Label 1"
UserControl.Label1(1).Caption = "Label 2"
UserControl.Label1(2).Caption = "Label 3"
End Sub
'ActiveX
Private Sub UserControl_Initialize()
Load Label1(0)
Load Label1(1)
Load Label1(2)
End Sub