GARANTIR DESCONTO

Fórum Criar Eventos em um Componente #240096

28/06/2004

0

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


Cabelo

Cabelo

Responder

Posts

28/06/2004

Nextone_br

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;


Responder

Gostei + 0

28/06/2004

Cabelo

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


Responder

Gostei + 0

28/06/2004

Paulo_amorim

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:
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é+


Responder

Gostei + 0

28/06/2004

Cabelo

Muito obrigado Paulo

Foi de muita ajuda..

funcionou perfeitamente..

sem mais

Cabelo


Responder

Gostei + 0

28/06/2004

Nextone_br

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;


Responder

Gostei + 0

28/06/2004

R0n4ld0

Parcero pq vc nao dispoe o seu componente pra galera usar esse metodo ai deve ser bastante util

t+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar