Fórum Criar Eventos em um Componente #240096
28/06/2004
0
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
Curtir tópico
+ 0Posts
28/06/2004
Nextone_br
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
28/06/2004
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
28/06/2004
Paulo_amorim
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
28/06/2004
Cabelo
Foi de muita ajuda..
funcionou perfeitamente..
sem mais
Cabelo
Gostei + 0
28/06/2004
Nextone_br
[]s;
Gostei + 0
28/06/2004
R0n4ld0
t+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)