Hola joseprad.
Un ejemplo en el que activas/desactivas los eventos por medio de dos botones:
Código Delphi
[-]
...
type
TForm1 = class(TForm)
...
DBGrid1: TDBGrid;
btnDeactivate: TButton;
btnActivate: TButton;
procedure FormCreate(Sender: TObject);
procedure btnDeactivateClick(Sender: TObject);
procedure btnActivateClick(Sender: TObject);
procedure DataSetBeforePost(DataSet: TDataSet);
procedure DataSetAfterPost(DataSet: TDataSet);
private
FOldBeforePost,
FOldAfterPost: TDataSetNotifyEvent;
...
end;
...
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
with DBGrid1.DataSource.DataSet do
begin
FOldBeforePost:= BeforePost;
FOldAfterPost := AfterPost;
end;
end;
procedure TForm1.btnDeactivateClick(Sender: TObject);
begin
with DBGrid1.DataSource.DataSet do
begin
BeforePost:= nil;
AfterPost := nil;
end;
end;
procedure TForm1.btnActivateClick(Sender: TObject);
begin
with DBGrid1.DataSource.DataSet do
begin
BeforePost:= FOldBeforePost;
AfterPost := FOldAfterPost;
end;
end;
procedure TForm1.DataSetAfterPost(DataSet: TDataSet);
begin
ShowMessage('Evento AfterPost');
end;
procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
begin
ShowMessage('Evento BeforePost')
end;
...
Saludos