Controles creados dinamicamente

17/08/2004 - 22:44 por Edwin Monsalve | Informe spam
Hola,

Yo creo unos controles de forma dinamica a partir de una informacion que
tengo guardada en una base de datos, mi pregunta es la siguiente, como puedo
activar desde codigo este control si no se previamente que formulario lo
contiene.

Esto es, a grandes rasgos, lo que quiero hacer,

En el evento Load de un Formulario MDI

Dim frm as New Form1
dim Ctrl as Control

Leo la base de datos para saber cuantos formularios tengo guardados y
cuantos controles contiene.

frm.name=DReader1("NombreForm")
while DReader2.Read
ctrl.name=DReader2("NombreControl")
ctrl.position=dreader("PosicionControl")
frm.controls.add(ctrl)
End

Despues en un evento del formulario MDI, quisiera que dado el nombre del
control ("NombreControl") y sabiendo el nombre del formulario ("NombreForm")
activar dicho control sin necesidad de iterar por toda la coleccion
MDIChildren del formulario MDI y despues por toda la coleccion Control del
formulario para encontrarlo.
 

Leer las respuestas

#1 Leonardo Azpurua
17/08/2004 - 23:31 | Informe spam
"Edwin Monsalve" escribió en el mensaje
news:
Hola,

Yo creo unos controles de forma dinamica a partir de una informacion


que
tengo guardada en una base de datos, mi pregunta es la siguiente, como


puedo
activar desde codigo este control si no se previamente que formulario lo
contiene.

Esto es, a grandes rasgos, lo que quiero hacer,

En el evento Load de un Formulario MDI

Dim frm as New Form1
dim Ctrl as Control

Leo la base de datos para saber cuantos formularios tengo guardados y
cuantos controles contiene.

frm.name=DReader1("NombreForm")
while DReader2.Read
ctrl.name=DReader2("NombreControl")
ctrl.position=dreader("PosicionControl")
frm.controls.add(ctrl)
End

Despues en un evento del formulario MDI, quisiera que dado el nombre


del
control ("NombreControl") y sabiendo el nombre del formulario


("NombreForm")
activar dicho control sin necesidad de iterar por toda la coleccion
MDIChildren del formulario MDI y despues por toda la coleccion Control del
formulario para encontrarlo.



Hola.

Una opción es que a medida que creas los controles, vayas llenando una
colección paralela con el nombre del control y la forma que lo contiene
(podrías almacenar incluso una referencia a la forma), indexada por el
nombre del control.

Private Class itemControles
Public NombreControl As String
Public refForma As Form
Public Sub New(n As String, f As Form)
NombreControl = n
refForma = f
End Sub
End Class

Dim colControles As New Collection

frm.name=DReader1("NombreForm")
while DReader2.Read
ctrl.name=DReader2("NombreControl")
ctrl.position=dreader("PosicionControl")
frm.controls.add(ctrl)



colControles.Add New itemControles(ctrl.Name, frm), ctrl.Name <<<

End [While]



De esta manera te bastará con:

Try
colControles(strNombreControl).Activate
...

Salud!

Leonardo

Preguntas similares