Hallo Kollegen,
es geht darum, die Refresh-Methode von TDataSet zu erweitern von ... nach
Delphi-Quellcode:
procedure TDataSet.Refresh;
begin
if <Bedingung> then exit;
DoBeforeRefresh;
CheckBrowseMode;
UpdateCursorPos;
try
InternalRefresh;
finally
Resync([]);
DoAfterRefresh;
end;
end;
Da du ja bereits gesagt hast, dass deine TDataSet-Klasse auch als TDataSet weitergegeben wird scheidet
overload und
class helper aus. Du brauchst auf jeden Fall eine Lösung mir
override.
Nach dem ich mir die Implementierungen der beteiligten Methoden angeschauft habe, sollte folgende Lösung funktionieren (vollig ungetestet).
Delphi-Quellcode:
type
TMyDataSet = class(TDataSet) // oder die von dir bevorzugte TDataSet-Ableitung
private
FNoRefresh: Boolean;
protected
procedure DoBeforeRefresh; override;
procedure CheckBrowseMode; override;
procedure UpdateCursorPos; override;
procedure InternalRefresh; override;
procedure Resync(Mode: TResyncMode); override;
procedure DoAfterRefresh; override;
end;
implementation
procedure TMyDataSetDoBeforeRefresh;
begin
FNoRefresh := <deine begingung>
if FNoRefresh then Exit;
inherited;
end;
procedure TMyDataSetCheckBrowseMode;
begin
if FNoRefresh then Exit;
inherited;
end;
procedure TMyDataSetUpdateCursorPos;
begin
if FNoRefresh then Exit;
inherited;
end;
procedure TMyDataSetInternalRefresh;
begin
if FNoRefresh then Exit;
inherited;
end;
procedure TMyDataSetResync(Mode: TResyncMode);
begin
if FNoRefresh then Exit;
inherited;
end;
procedure TMyDataSetDoAfterRefresh;
begin
if FNoRefresh then
FNoRefresh := False
else
inherited;
end;
end.