En gambas no hay propiamente arrays de controles. En gambas hay controles diversos que pueden tener un mismo manejador de eventos.
Pongamos que yo tengo varios textbox en los que quiero tener un código común. La solución es poner en todos ellos al mismo manejador de eventos y luego programar código para ese manejador.
Si tengo tres textbox y escribiera código para ellos el código podría ser este:
Es decir, cada control tiene su propio evento change. Si deseo cambiar esto lo que haré es cambiar a todos la propiedad group para que todos utilicen el mismo manejador
Y ahora programar el manejador común
¿Como distinguir los distintos controles dentro de un manejador de eventos común?
La forma de hacerlo es utilizar la propiedad TAG que es de tipo variant y cuyo valor nos dirá cual de los controles físicos estamos utilizando.
Es decir, haríamos lo siguiente:
Y así para saber que control físico es el que estamos usando en cada momento bastará con mirar el contenido de la propiedad TAG al igual que en VB usábamos la propiedad index.
LAST
Dado que en gambas objetos de naturaleza distinta y/o con nombres distintos pueden tener un mismo manejador de eventos se hace necesaria la funcionalidad de Last que retorna el nombre del último objeto que ha recibido un evento.
Para crearlas dinámicamente
Pongamos que yo tengo varios textbox en los que quiero tener un código común. La solución es poner en todos ellos al mismo manejador de eventos y luego programar código para ese manejador.
Si tengo tres textbox y escribiera código para ellos el código podría ser este:
textbox1_change()
...
end
textbox2_change()
...
end
textbox3_change()
...
end
...
end
textbox2_change()
...
end
textbox3_change()
...
end
Es decir, cada control tiene su propio evento change. Si deseo cambiar esto lo que haré es cambiar a todos la propiedad group para que todos utilicen el mismo manejador
Textbox1.group="comun"
Textbox2.group="comun"
Textbox3.group="comun"
Textbox2.group="comun"
Textbox3.group="comun"
Y ahora programar el manejador común
Comun_change()
...
end
end
¿Como distinguir los distintos controles dentro de un manejador de eventos común?
La forma de hacerlo es utilizar la propiedad TAG que es de tipo variant y cuyo valor nos dirá cual de los controles físicos estamos utilizando.
Es decir, haríamos lo siguiente:
Textbox1.group="comun"
Textbox1.tag=1
Textbox2.group="comun"
Textbox1.tag=2
Textbox3.group="comun"
Textbox1.tag=3
Textbox1.tag=1
Textbox2.group="comun"
Textbox1.tag=2
Textbox3.group="comun"
Textbox1.tag=3
Y así para saber que control físico es el que estamos usando en cada momento bastará con mirar el contenido de la propiedad TAG al igual que en VB usábamos la propiedad index.
LAST
Dado que en gambas objetos de naturaleza distinta y/o con nombres distintos pueden tener un mismo manejador de eventos se hace necesaria la funcionalidad de Last que retorna el nombre del último objeto que ha recibido un evento.
Comun_change()
select case Last.tag
case 1 ...
case 2 ...
case 3 ...
end select
end
select case Last.tag
case 1 ...
case 2 ...
case 3 ...
end select
end
Para crearlas dinámicamente
Fuente: http://www.gambas-es.org/viewtopic.php?f=1&t=50&highlight=group
Buenas tardes
ResponderEliminarExiste la posibilidad de seleccionar un tag, algo asi
Select tag 1
Es decir quiero seleccionar un determinado tag
+Caldas Informatica : lo que puedes hacer es recorrer los controles que haya en el formulario, e ir comprobando sus tag con el valor que quieras (en este caso 1), y si vas obteniendo los controles que tengan ese tag.
ResponderEliminarMirate http://cursogambas.blogspot.com.es/2012/09/recorrer-los-controles-que-tenga-un.html