Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#6

AW: TDataSet.Refresh erweitern

  Alt 12. Dez 2015, 15:51
Zugegebenermaßen ist mir nicht klar, was Du möchtest.

Versuch einer Erklärung:

Du möchtest ein TDataSet verwenden und von dem die Methode Refresh in einer veränderten Form (bzw. nur unter bestimmten Bedingungen nutzen), ohne einen Nachkommen von TDataSet zu erstellen, der über eine veränderte Methode Refresh verfügt.

Zeig uns doch bitte mal die Routine aus Deinem Quelltext, an der Refresh aufgerufen werden soll. Eventuell fällt ja jemandem eine Möglichkeit ein, dort entsprechend Deinen Wünschen zu reagieren.

Oder hast Du keinen Einfluß auf den Aufruf von Refresh, möchtest aber trotzdem ein verändertes Verhalten erreichen?

Mir fällt jetzt eigentlich nur ein, wie oben bereits vorgeschlagen, onBeforeRefresh zu nutzen, dort die Bedingung zu prüfen und, falls diese nicht erfüllt ist, eine Exception zu werfen, damit TDataSet.Refresh nicht aufgerufen wird. Aber dann benötigst Du auch eine Fehlerbehandlungsroutine, die diesen Fehler ignoriert und den Programmablauf ungestört weiter machen lässt, sinnvoll meldet...

Also eventuell sowas:
Delphi-Quellcode:
type
  ERefreshError = Class(Exception);

...

procedure TfmTextverwaltung.myDataSetBeforeRefresh(DataSet: TDataSet);
begin
  try
    if meineAbbruchBedingung then begin
      raise ERefreshError.Create('Refresh nicht zulässig.');
    end;
  except
    on e: ERefreshError do begin
      // Das "Fressen" der Exception an dieser Stelle wirkt wie das Exit.
      // TDataSet.Refresh wird nicht ausgerufen.
      // ShowMessage(e.message);
    end;
  end;
end;
  Mit Zitat antworten Zitat