Criar Eventos em um Componente
Caros Colegas..
Estou criando um componente para Autenticação de senha e níveis de acesso, mas estou com um problema, preciso criar um evento, sabendo que este componente descende da classe TComponent.
Preciso de um evento assim (entre outros) BeforeAutentica : seria um evento que será acionado antes da autenticação por exemplo, já procurei bastante e não achei nada que fale sobre isso..
Alguém sabe como fazê-lo??
agradeço muito a atenção..
Cabelo
Estou criando um componente para Autenticação de senha e níveis de acesso, mas estou com um problema, preciso criar um evento, sabendo que este componente descende da classe TComponent.
Preciso de um evento assim (entre outros) BeforeAutentica : seria um evento que será acionado antes da autenticação por exemplo, já procurei bastante e não achei nada que fale sobre isso..
Alguém sabe como fazê-lo??
agradeço muito a atenção..
Cabelo
Cabelo
Curtidas 0
Respostas
Nextone_br
28/06/2004
Ficaria algo mais ou menos assim... ajusta para as tuas necessidades...
interface
TTeuComponente = class(TComponent)
...
private
FOnBeforeAutentica: TNotifyEvent
...
published
property BeforeAutentica: TNotifyEvent read GetBeforeAutentica write SetBeforeAutentica;
implementation
...
...
procedure Autentica
begin
...
if Assigned(FOnBeforeAutentica) then
FOnBeforeAutentica(Self{ou um sender do método autentica});
//Teu método de autenticação
...
end;
[]s;
interface
TTeuComponente = class(TComponent)
...
private
FOnBeforeAutentica: TNotifyEvent
...
published
property BeforeAutentica: TNotifyEvent read GetBeforeAutentica write SetBeforeAutentica;
implementation
...
...
procedure Autentica
begin
...
if Assigned(FOnBeforeAutentica) then
FOnBeforeAutentica(Self{ou um sender do método autentica});
//Teu método de autenticação
...
end;
[]s;
GOSTEI 0
Cabelo
28/06/2004
Colega..
Obrigado pela explicação..
Mas ainda estou tendo alguns problemas, sei que GetBeforePrint e SetBeforePrint são procedures, mas como irei declará-las, já que não possuo nenhuma condição ainda para este evento??
Eu compilei e deu o seguinte erro :
´field or method identifier expected´.
O quê seria isso..?
agradeço muito sua atenção..
Cabelo
Obrigado pela explicação..
Mas ainda estou tendo alguns problemas, sei que GetBeforePrint e SetBeforePrint são procedures, mas como irei declará-las, já que não possuo nenhuma condição ainda para este evento??
Eu compilei e deu o seguinte erro :
´field or method identifier expected´.
O quê seria isso..?
agradeço muito sua atenção..
Cabelo
GOSTEI 0
Paulo_amorim
28/06/2004
Olá
Eu postei uma pergunta parecida nem faz mt tempo...
O Help do Delphi traz bastante informação sobre como criar eventos em um componente...bem explicativo!
Seria mais ou menos assim:
inicialmente, deve-se ver quais os parametros que vc vai precisar
Um OnClick precisa de um [i:a5f138e0dd]Sender: TObject[/i:a5f138e0dd], um OnKeyPress precisa também de [i:a5f138e0dd]Key: Char[/i:a5f138e0dd]
Se seu evento precisa de parâmetros diferentes, deve-se declarar na unit:
Em seguida, coloque uma propriedade na tua classe e a variável correspondente
Agora ele existe, mas ainda precisa-se saber quando ele deve ser executado
Isso vc define no método (no seu caso, ´Autentica´)
Antes de executar seu código de autenticação, coloque esse teste:
Repare bem: nunca se deve colocar [i:a5f138e0dd]else[/i:a5f138e0dd] quando testar evento
Se nao tiver nada no FOnMeuEvento, iso não deve alterar em nada o procedimento.
Espero que ajude
Até+
Eu postei uma pergunta parecida nem faz mt tempo...
O Help do Delphi traz bastante informação sobre como criar eventos em um componente...bem explicativo!
Seria mais ou menos assim:
inicialmente, deve-se ver quais os parametros que vc vai precisar
Um OnClick precisa de um [i:a5f138e0dd]Sender: TObject[/i:a5f138e0dd], um OnKeyPress precisa também de [i:a5f138e0dd]Key: Char[/i:a5f138e0dd]
Se seu evento precisa de parâmetros diferentes, deve-se declarar na unit:
type TMeuTipoDeEvento = procedure <seus parametros> of object;
Em seguida, coloque uma propriedade na tua classe e a variável correspondente
FOnMeuEvento: TMeuTipoDeEvento; (...) property OnMeuEvento: TMeuTipoDeEvento read FOnMeuEvento write FOnMeuEvento;
Agora ele existe, mas ainda precisa-se saber quando ele deve ser executado
Isso vc define no método (no seu caso, ´Autentica´)
Antes de executar seu código de autenticação, coloque esse teste:
procedure MinhaClasse.MeuMetodo; begin if Assigned( FOnMeuEvento) then FOnAutentica( <seus parametros> ); //codigo normal end;
Repare bem: nunca se deve colocar [i:a5f138e0dd]else[/i:a5f138e0dd] quando testar evento
Se nao tiver nada no FOnMeuEvento, iso não deve alterar em nada o procedimento.
Espero que ajude
Até+
GOSTEI 0
Cabelo
28/06/2004
Muito obrigado Paulo
Foi de muita ajuda..
funcionou perfeitamente..
sem mais
Cabelo
Foi de muita ajuda..
funcionou perfeitamente..
sem mais
Cabelo
GOSTEI 0
Nextone_br
28/06/2004
Bom que funcionou... apenas para deixar o esclarecimento. Os métodos Get e Set utilizados nas propriedades (públicas) que acessam os atributos (privados) de uma classe (conforme comentei no meu post) fica a teu critério colocar (e seria também private). Conforme o nosso outro colega Paulo, pode-se acessar diretamente o atributo... caso queira que o Delphi já declare os métodos pra ti, basta criar a propriedade e pressionar as teclas CTRL+SHIFT+C. Depois é só implementar o ´corpo´ dos métodos.
[]s;
[]s;
GOSTEI 0
R0n4ld0
28/06/2004
Parcero pq vc nao dispoe o seu componente pra galera usar esse metodo ai deve ser bastante util
t+
t+
GOSTEI 0