Sobreposição de evento do ClientDataSet
Estou criando um componente descendendo do TClientDataSet para que no evento AfterPost ele execute uma tarefa pre-determinada, para isso fiz o seguinte:
type
TMeuClientDataSet = class(TClientDataSet)
private
{ Private declarations }
FOnAfterPost: TDataSetNotifyEvent;
procedure AfterPost(DataSet: TDataSet);
protected
{ Protected declarations }
property OnAfterPost: TDataSetNotifyEvent read FOnAfterPost write FOnAfterPost;
public
{ Public declarations }
published
{ Published declarations }
end;
...
procedure TMeuClientDataSet.AfterPost(DataSet: TDataSet);
begin
if Assigned(FOnAfterPost) then
FOnAfterPost(DataSet);
ShowMessage(´Meu comando´);
end;
O que está acontecendo é que após editar e ´postar´ um registro ele não dispara esse AfterPost.
É possível fazer isso? O que fiz de errado?
Se alguem fez o mesmo para outro evento em até mesmo outro componente como o TTable poderá me ser útil.
Obrigado!
type
TMeuClientDataSet = class(TClientDataSet)
private
{ Private declarations }
FOnAfterPost: TDataSetNotifyEvent;
procedure AfterPost(DataSet: TDataSet);
protected
{ Protected declarations }
property OnAfterPost: TDataSetNotifyEvent read FOnAfterPost write FOnAfterPost;
public
{ Public declarations }
published
{ Published declarations }
end;
...
procedure TMeuClientDataSet.AfterPost(DataSet: TDataSet);
begin
if Assigned(FOnAfterPost) then
FOnAfterPost(DataSet);
ShowMessage(´Meu comando´);
end;
O que está acontecendo é que após editar e ´postar´ um registro ele não dispara esse AfterPost.
É possível fazer isso? O que fiz de errado?
Se alguem fez o mesmo para outro evento em até mesmo outro componente como o TTable poderá me ser útil.
Obrigado!
Paulomad
Curtidas 0
Respostas
Bon Jovi
18/06/2004
Nesse caso basta vc dar override no método virtual DoAfterPost:
.......... public procedure DoAfterPost; override; .......... procedure TSeuClientDataSet.DoAfterPost; begin inherited; ShowMessage(´seu comando´); end;
GOSTEI 0
Paulomad
18/06/2004
É isso mesmo!
Muito obrigado!
Muito obrigado!
GOSTEI 0