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