Hola saldanaluis.
Si el DataSet permanecerá abierto, es totalmente correcta tu apreciación.
En ese caso, la forma de guardar/restaurar el método asociado al evento sería:
Código Delphi
[-]
...
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FDataSetNotifyEvent: TDataSetNotifyEvent; procedure DataSetAfterScroll(DataSet: TDataSet);
public
end;
...
implementation
procedure TForm1.DataSetAfterScroll(DataSet: TDataSet);
begin
Button1.Enabled:= DataModule.TuDataSet.FieldByName('Campo_A_Verificar').AsString = 'Dato_A_Evaluar';
end;
procedure TForm1.FormShow(Sender: TObject);
begin
FDataSetNotifyEvent:= DataModule.DataSet.AfterScroll; DataModule.DataSet.AfterScroll:= DataSetAfterScroll; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModule.DataSet.AfterScroll:= FDataSetNotifyEvent; end;
...
Un saludo.