Apúntate...


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

viernes, 16 de noviembre de 2012

Arrays de Controles

Este post, es copia del que realizo Soplo en el foro de gambas-es.org.

 
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:

textbox1_change()
...
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"

Y ahora programar el manejador común
Comun_change()
...
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

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


Para crearlas dinámicamente

Dim T1 as textbox, T2 as textbox

T1=new textbox as "grupo"
T2=new textbox as "grupo"

sub grupo_keypress()
...
end

 




Fuente: http://www.gambas-es.org/viewtopic.php?f=1&t=50&highlight=group

2 comentarios:

  1. Buenas tardes
    Existe la posibilidad de seleccionar un tag, algo asi
    Select tag 1
    Es decir quiero seleccionar un determinado tag

    ResponderEliminar
  2. +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.
    Mirate http://cursogambas.blogspot.com.es/2012/09/recorrer-los-controles-que-tenga-un.html

    ResponderEliminar

A falta de donativos... un poco de publicidad