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;