Kannst du nicht sowas machen?
Delphi-Quellcode:
TBaseForm = class(TForm)
protected
FRepaintDisabled: Boolean;
procedure DoPaint; override;
public
procedure DisableRepaints;
procedure EnableRepaints;
end;
procedure TBaseForm.DisableRepaints;
begin
FRepaintDisabled := True;
end;
procedure TBaseForm.EnableRepaints;
begin
FRepaintDisabled := True;
end;
procedure TBaseForm.DoPaint;
begin
if not FRepaintDisabled then
inherited DoPaint;
end;
---------------------------------------------
procedure TMyForm.FormPaint(Sender: TObject);
begin
// bla bla bla ...
DisableRepaints;
Button1.Left := Button1.Left + 1;
EnableRepaints;
// bla bla bla ...
end;
Soll jetzt eher Pseudocode sein, habe lange nichts mit Delphi gemacht. Wenn es sehr viele Stellen sind und man nicht alle einzeln ändern will, könnte man auch
Delphi-Quellcode:
procedure TBaseForm.DoPaint;
begin
if not FRepaintDisabled then
begin
DisableRepaints;
inherited DoPaint;
EnableRepaints;
end;
end;
versuchen. Könnte natürlich ungewollte Seiteneffekt haben.