Em
outras linguagens de programação, como VB, podemos
trabalhar com grupos de controles, de forma que, vários
botões lancem um evento comum ao ser pressionado, e dentro do
evento, cada botão distingue-se, no caso do VB, com o valor
"Index" que o evento possue.
Gambas tem sua própria solução:
-
1)
Em tempo de desenho: Dentro da IDE, no painel de propriedades de
um objeto gráfico, existe uma propriedades chamada "Grupo", que
não é exatamente uma propriedade do objeto, e sim o nome
que daremos ao seu gestor de eventos.
Por padrão, quando
não indicamos nada, o gestor de eventos tem o mesmo nome que o
objeto, assim se tivermos um botão chamado "Btn1" seu gestor de
eventos será "Btn1", de forma que para capturar um evento, como
podes ser um "Click", escreveremos o código assim:
PUBLIC SUB Btn1_Click() ... END
Se
especificarmos a pseudo-propriedade "Group", poderemos
indicar qualquer um outro nome, podemos até mesmo dar o mesmo
nome para múltiplos controles. Se dispomos, por exemplo, de
cinco botões, e nos cinco colocamos "Botoes" como valor de
"Group", capturaremos os eventos dos cinco dentro de:
PUBLIC SUB Botoes_Click() ... END
E como sabemos qual
é o botão pressionado? Dentro de cada evento, podemos
chamar um objeto especial, chamado "LAST", o qual mantem uma
referência ao objeto que lançou o evento. Assim indicamos:
PRINT LAST.Text
Mostrará
no console o texto do botão que lançou o evento.
também podemos empregar a propriedade "TAG" de cada botão
para adicionarmos qualquer característica específica que
requeremos para diferencia-los:
SELECT CASE LAST.Tag ... ... END SELECT
-
2)
Em tempo de execução: em Gambas temos a liberdade para
criar qualquer controle durante a execução de um
programa. Se desejarmos criar seis botões, e fazer com que
respondam a um evento comum, o indicaremos na criação do
controle:
DIM Btn As Button ... Btn = NEW Button(ME) AS "Botoes" ...
Desta
forma, todos os botões criados respondem ao gestor de eventos
"Botoes", assim como no primeiro caso, pela palavra chave "LAST".
Também temos a
possibilidade de armazenar uma referência a cada botão
dentro de uma matriz tipo "Object[]" para manipula-los de fora dos
eventos.
|