Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

sábado, 1 de septiembre de 2012

Recorrer los controles que tenga un formulario

Algunas veces nos interesa recorrer los controles que tenga un formulario. Como los controles son enumerables, podemos usar un bucle For Each

Por ejemplo, nos interesa pasar a una función, los comboxes que haya el formulario que estemos:

DIM uncombo AS Object 'definimos un objeto temporal "uncombo"

FOR EACH uncombo IN ME.Controls 'recorremos todos los controles que hay en el formulario actual (Me)
'uncombo ira tomando los distintos objetos, que haya
IF uncombo IS Combobox THEN
' como el objeto uncombo es del tipo Combobox, lo pasamos a una funcion
funcion(uncombo)
ENDIF
NEXT

Otro ejemplo:
Esta vez, se trata de realizar algo según el control:
Si en un Combobox, ejecuta la funcion HacerAlgoConCombobox. 
Si es un Button, ejecuta la funcion HacerAlgoConButton.
Y si no es ninguno de lo anterior, simplente escribe el nombre interno del objeto y su tipo.

Public Sub Form_Open()

Dim objTemp As Object 'definimos un objeto temporal

For Each objTemp In Me.Controls 'recorremos todos los controles que hay en el formulario actual (Me)

Select object.Type(objTemp)
Case "ComboBox"
HacerAlgoConCombobox(objTemp)
Case "Button"
HacerAlgoConButton(objTemp)
Default
'si no es nada de lo anterior muestra el nombre del control interno y su tipo.
Print objtemp, object.Type(objtemp)

End Select
Next

End

Public Sub HacerAlgoConCombobox(obj As ComboBox)
Print "Es un combobox..."; obj
End
Public Sub HacerAlgoConButton(obj As Button)
Print "Es un Button..."; obj
End

Descarga del Código fuente: enlace
Descarga del ejecutable .gambas: enlace


Fuente:
Post del Foro Gambas-Es.Org
http://gambas-basico.blogspot.com.es/2012/06/bucles-anidados.html

No hay comentarios:

Publicar un comentario

A falta de donativos... un poco de publicidad