Home » Tipps & Tricks » Komponenten » Allgemein » Steuerelement am Neuzeichnen hindern
Steuerelement am Neuzeichnen hindern
Mithilfe folgender Prozedur lässt sich bei jeder Komponente, die direkt oder indirekt von TWinControl abgeleitet wurde, das Neuzeichnen sperren.Ihr muss als erster Parameter die Referenz zu dem entsprechenden Control übergeben werden. Über den zweiten Parameter wird gesteuert, ob das Steuerelement gesperrt (True) oder entsperrt (False) werden soll. Beim Entsperren wird es automatisch neu gezeichnet.
procedure LockWinControl(const WC: TWinControl; ALock: Boolean); begin if (not Assigned(WC)) or (WC.Handle = 0) then exit; if ALock then WC.Perform(WM_SETREDRAW, 0, 0) else begin WC.Perform(WM_SETREDRAW, 1, 0); RedrawWindow(WC.Handle, nil, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN); end; end;
Achten Sie bei der Verwendung der Prozedur darauf, die Sperrung/Entsperrung mit einem try-finally-Block zu schützen:
procedure TForm1.Button1Click(Sender: TObject); begin LockWinControl(Groupbox1, True); try //Umfangreiche Änderungen finally LockWinControl(Groupbox1, False); end; end;
Die Sperrung wirkt sich in diesem Beispiel auch auf alle Komponenten aus, die Groupbox1 als Parent haben.