como recorrer todos los controles en una forma

05/11/2004 - 20:44 por mgs | Informe spam
Hola grupo, quisiera saber como hacer para recorrer todos los objetos en una
forma, tengo en la forma un tabcontrol y dentro de este todos los demas
controles, lo que quiere desarrollar es un procedimiento que solo mandandole
por parámetro la forma, me recorra todos los controles que hay en ella...

hice algo como

for c as control in forma.controls

next

donde forma es la forma que esto enviando por parámetro, pero me he dado
cuenta que solo trae el tabcontrol...

alguien me puede ayudar con esto?, no todas las formas van a tener
tabcontrols, por lo que NO podría hacer esto

for c as control in forma.control("tab")
.
next

gracias por su ayuda..

Preguntas similare

Leer las respuestas

#1 htb
05/11/2004 - 22:31 | Informe spam
Lo que pasa es que los controles dentro del TabControl,
son un sub-conjunto de esta, igual en un groupBox, y
otros controles. Son controles dentro de otro control.

Debes utilizar algun metodo recursivo como por ejemplo:

Private Sub RecorrerControles(ByVal pControl As _
Control.ControlCollection)
Dim vControl As Object ' Control o Arreglo de Controles
Dim vTipoControl as string
For Each vControl In pControl
If vControl.Controls.Count > 0 Then
'Al ser una colección se llama recursivamente
RecorrerControles(vControl.Controls)
Else
' Procesa Control
vTipoControl = TypeName(vControl) ' ComboBox,etc...

End If
Next
End Sub



Hola grupo, quisiera saber como hacer para recorrer


todos los objetos en una
forma, tengo en la forma un tabcontrol y dentro de este


todos los demas
controles, lo que quiere desarrollar es un procedimiento


que solo mandandole
por parámetro la forma, me recorra todos los controles


que hay en ella...

hice algo como

for c as control in forma.controls

next

donde forma es la forma que esto enviando por parámetro,


pero me he dado
cuenta que solo trae el tabcontrol...

alguien me puede ayudar con esto?, no todas las formas


van a tener
tabcontrols, por lo que NO podría hacer esto

for c as control in forma.control("tab")
..
next

gracias por su ayuda..


.

Respuesta Responder a este mensaje
#2 Guillermo guille
06/11/2004 - 01:21 | Informe spam
Sólo una recomendación: Usa siempre Option Strict On
En ese caso, ese código no funcionará.
En lugar de declarar vControl como Object (en VB6 estaba bien), declaralo como
Control, así evitarás el "late binding" y aunque funcionará igual, pues eso...
estarás usando código "más recomendable" (al menos desde mi punto de vista y de
el de muchos otros)

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"htb" wrote in message
news:054101c4c37e$ca4ff5b0$
Lo que pasa es que los controles dentro del TabControl,
son un sub-conjunto de esta, igual en un groupBox, y
otros controles. Son controles dentro de otro control.

Debes utilizar algun metodo recursivo como por ejemplo:

Private Sub RecorrerControles(ByVal pControl As _
Control.ControlCollection)
Dim vControl As Object ' Control o Arreglo de Controles
Dim vTipoControl as string
For Each vControl In pControl
If vControl.Controls.Count > 0 Then
'Al ser una colección se llama recursivamente
RecorrerControles(vControl.Controls)
Else
' Procesa Control
vTipoControl = TypeName(vControl) ' ComboBox,etc...

End If
Next
End Sub



Hola grupo, quisiera saber como hacer para recorrer


todos los objetos en una
forma, tengo en la forma un tabcontrol y dentro de este


todos los demas
controles, lo que quiere desarrollar es un procedimiento


que solo mandandole
por parámetro la forma, me recorra todos los controles


que hay en ella...

hice algo como

for c as control in forma.controls

next

donde forma es la forma que esto enviando por parámetro,


pero me he dado
cuenta que solo trae el tabcontrol...

alguien me puede ayudar con esto?, no todas las formas


van a tener
tabcontrols, por lo que NO podría hacer esto

for c as control in forma.control("tab")
..
next

gracias por su ayuda..


.

Respuesta Responder a este mensaje
#3 Henry.Net
06/11/2004 - 20:11 | Informe spam
Hola msg

Debes de verificar si el control es tambien un control contenedor esto
quiere decir si el control pude contener dentro de el otros controles

ej.

Public sub RecorreControles(byval Ob as Object)

dim C as Control
'Pudes verificar de que tipo es y hacer c segun el tipo para evitar el
"late binding" que comenta Guillermo

for each C in Ob.Controls

if C.controls.count>0 then 'esto quiere decir que es un contenedor
de controles
debug.WriteLine(C.Name)
RecorreControles C 'Llamas de nuevo a la turina para recorrer
los controles que contiene este control
else
debug.WriteLine(c.Name)
end if

next

end sub

Saludos.

"mgs" escribió en el mensaje
news:ueOG3$
Hola grupo, quisiera saber como hacer para recorrer todos los objetos en
una
forma, tengo en la forma un tabcontrol y dentro de este todos los demas
controles, lo que quiere desarrollar es un procedimiento que solo
mandandole
por parámetro la forma, me recorra todos los controles que hay en ella...

hice algo como

for c as control in forma.controls

next

donde forma es la forma que esto enviando por parámetro, pero me he dado
cuenta que solo trae el tabcontrol...

alguien me puede ayudar con esto?, no todas las formas van a tener
tabcontrols, por lo que NO podría hacer esto

for c as control in forma.control("tab")
.
next

gracias por su ayuda..


Respuesta Responder a este mensaje
#4 Guillermo guille
06/11/2004 - 20:53 | Informe spam
pero si el parámetro de la función es Object, también se haría "late binding",
en ese caso habrá que usar ControlCollection o bien Control.

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Henry.Net" wrote in message
news:%
Hola msg

Debes de verificar si el control es tambien un control contenedor esto quiere
decir si el control pude contener dentro de el otros controles

ej.

Public sub RecorreControles(byval Ob as Object)

dim C as Control
'Pudes verificar de que tipo es y hacer c segun el tipo para evitar el
"late binding" que comenta Guillermo

for each C in Ob.Controls

if C.controls.count>0 then 'esto quiere decir que es un contenedor de
controles
debug.WriteLine(C.Name)
RecorreControles C 'Llamas de nuevo a la turina para recorrer los
controles que contiene este control
else
debug.WriteLine(c.Name)
end if

next

end sub

Saludos.

"mgs" escribió en el mensaje
news:ueOG3$
Hola grupo, quisiera saber como hacer para recorrer todos los objetos en una
forma, tengo en la forma un tabcontrol y dentro de este todos los demas
controles, lo que quiere desarrollar es un procedimiento que solo mandandole
por parámetro la forma, me recorra todos los controles que hay en ella...

hice algo como

for c as control in forma.controls

next

donde forma es la forma que esto enviando por parámetro, pero me he dado
cuenta que solo trae el tabcontrol...

alguien me puede ayudar con esto?, no todas las formas van a tener
tabcontrols, por lo que NO podría hacer esto

for c as control in forma.control("tab")
.
next

gracias por su ayuda..






Respuesta Responder a este mensaje
#5 htb
08/11/2004 - 16:21 | Informe spam
Gracias por las recomendaciones.


Sólo una recomendación: Usa siempre Option Strict On
En ese caso, ese código no funcionará.
En lugar de declarar vControl como Object (en VB6 estaba


bien), declaralo como
Control, así evitarás el "late binding" y aunque


funcionará igual, pues eso...
estarás usando código "más recomendable" (al menos desde


mi punto de vista y de
el de muchos otros)

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"htb" wrote in


message
news:054101c4c37e$ca4ff5b0$
Lo que pasa es que los controles dentro del TabControl,
son un sub-conjunto de esta, igual en un groupBox, y
otros controles. Son controles dentro de otro control.

Debes utilizar algun metodo recursivo como por ejemplo:

Private Sub RecorrerControles(ByVal pControl As _
Control.ControlCollection)
Dim vControl As Object ' Control o Arreglo de Controles
Dim vTipoControl as string
For Each vControl In pControl
If vControl.Controls.Count > 0 Then
'Al ser una colección se llama recursivamente
RecorrerControles(vControl.Controls)
Else
' Procesa Control
vTipoControl = TypeName(vControl) ' ComboBox,etc...

End If
Next
End Sub



Hola grupo, quisiera saber como hacer para recorrer


todos los objetos en una
forma, tengo en la forma un tabcontrol y dentro de este


todos los demas
controles, lo que quiere desarrollar es un procedimiento


que solo mandandole
por parámetro la forma, me recorra todos los controles


que hay en ella...

hice algo como

for c as control in forma.controls

next

donde forma es la forma que esto enviando por parámetro,


pero me he dado
cuenta que solo trae el tabcontrol...

alguien me puede ayudar con esto?, no todas las formas


van a tener
tabcontrols, por lo que NO podría hacer esto

for c as control in forma.control("tab")
..
next

gracias por su ayuda..


.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida