Ver Mensaje Individual
  #9  
Antiguo 25-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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; // para guardar puntero al método
    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;  // FDataSetNotifyEvent apunta al último método definido
  DataModule.DataSet.AfterScroll:= DataSetAfterScroll;   // Asignamos nuevo método
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   DataModule.DataSet.AfterScroll:= FDataSetNotifyEvent;  // restauramos el método anterior
end;
...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-04-2011 a las 16:56:53.
Responder Con Cita