A
interface gráfica oferece uma série de eventos para
modelar o comportamento de um programa, também podemos criar
nossos próprios eventos personalizados, e não só
em programas gráficos, mas também em programas de
console, já que a gestão de eventos do Gambas é
independente do ambiente gráfico, diferente de outras linguagens.
Para
entendermos, criaremos um módulo de classe chamado, nosso
exemplo, "ClsElemento". Esta classe de exemplo, terá um
só método " "Chamada()" que incrementa um contador. Uma
vez que o contador alcance o valor "10", reseta-se o contador, e
dispara um evento para informar isso.
A primeira coisa a fazer
é declarar o evento. Neste caso, enviará como
parâmetro uma cadeia advertindo que o contador vale 10:
EVENT MeuEvento(Data AS String)
Após isto, adicionaremos uma variável privada que atua como contador:
PRIVATE Contador AS Integer
Escreveremos agora o código da função de chamada:
PUBLIC SUB Chamada()
' Incrementamos o contador
Contador = Contador + 1
IF Contador > 9 THEN
' Si o valor do contador é 10
' disparamos o evento
RAISE MeuEvento("Contador vale 10")
' Y resetamos o contador
Contador = 0
END IF
END
Finalmente,
escreveremos o código principal do programa. para isso criaremos
um formulário com um botão. No inicio declaramos um
objeto de nossa classe:
PRIVATE MinhaClasse AS ClsElemento
Ao abrir-se o formulário, criaremos o objeto, declarando-o "Observador" de eventos entre aspas:
PUBLIC SUB Form_Open()
MinhaClasse = NEW ClsElemento AS "MeuObservador"
END
Adicionamos ao botão o código para que utilize o objeto:
PUBLIC SUB Button1_Click()
MinhaClasse.Chamada()
END
E finalmente, recorremos ao evento:
PUBLIC SUB MeuObservador_MeuEvento(Data AS String)
Message.Info (Data)
END
Esta
função tem o nome de "observador" de eventos, um
hífen baixo e o nome do evento, pelo que será chamada
quando dispara-se o evento.
Código completo de "ClsElemento":
' Gambas class file
PRIVATE Contador AS Integer
EVENT MeuEvento(Data AS String)
PUBLIC SUB Chamada()
Contador = Contador + 1
IF Contador > 9 THEN
RAISE MeuEvento("Contador vale 10")
Contador = 0
END IF
END
Código completo de "Form1":
PRIVATE MinhaClasse AS ClsElemento
PUBLIC SUB Button1_Click()
MinhaClasse.Chamada ()
END
PUBLIC SUB MeuObservador_MeuEvento(Data AS String)
Message.Info (Data)
END
PUBLIC SUB Form_Open()
MinhaClasse = NEW ClsElemento AS "MeuObservador"
END
|