Criação de componentes

Delphi

27/10/2004

:D Olá galerinha
Bem estou tentando criar um componente esdado da classe TClientDataSet e nele estava tentando fazer uma modificação no evento beforeopen.

protected
{ Protected declarations }
procedure BeforeOpen(DataSet: TDataSet);override;

fiz esta declaração programei todo o evento quando fui compilar me foi exibida a mensagem.
Methodo ´BeforeOpen´ not found in Base Class.
Bem eu sei que este metodo é nativo da classe TDataSet mas isso siguinifica que eu não poderia modifica-lo deste meu componente ... para fazer isto o que eu teria de fazer?
:?: Como capturar o metodo before open num clientdataset?


Mitsalito

Mitsalito

Curtidas 0

Respostas

Afarias

Afarias

27/10/2004

BeforeOpen não é um Método mas um Evento.

Neste caso vc pode sobrescrever o método protegido DoBeforeOpen (responsável pela chamada do Evento) q originalmente nada mas é que::

procedure TDataSet.DoBeforeOpen;
begin
  if Assigned(FBeforeOpen) then FBeforeOpen(Self);
end;


desta feita vc pode fazer::

protected 
   procedure DoBeforeOpen;override; 
{...}


e então re-implementar o método como desejar::

procedure TClasseTal.DoBeforeOpen;
begin
  {...}
  inherited;
  {...}
end;




T+


GOSTEI 0
Alexandresbo2

Alexandresbo2

27/10/2004

Amigo naum testei....mas Pelo que olhei na unit Db vc tem que declarar Como DoBeforeOpen e naum BeforeOpen


GOSTEI 0
Mitsalito

Mitsalito

27/10/2004

Muito Obrigado pelas duas respostas vcs dois são genios ... não só me ensinaram a fazer, como me ensinaram a da proxima onde devo procurar.
obrigadão.
Valeulll..... :P


GOSTEI 0
POSTAR