Delphi - Komponens újrarajzolásának megakadályozása

forráskód letöltése
Programfejlesztés folyamán előfordulhatnak olyan esetek, amikor az válik szükségessé, hogy egy-egy komponens vagy esetleg az egész Form újrarajzolásának folyamatát megakadályozzuk.
Az újrarajzolás letiltását egy WM_SETREDRAW üzenet küldésével tudjuk elérni, melynél a wParam értéke nulla. Ettől kezdve az a komponens, melynek az üzenetet küldtük, nem frissíti területét.
procedure TForm1.Button1Click(Sender: TObject);
begin
  SendMessage(Panel1.Handle, WM_SETREDRAW, 0, 0)
end;
Amennyiben ismét engedélyezni szeretnénk a frissítést, ugyanezt az üzenetet kell elküldenünk, de most a wParam értéke 1 kell hogy legyen.
procedure TForm1.Button2Click(Sender: TObject);
begin
  SendMessage(Panel1.Handle, WM_SETREDRAW, 1, 0)
end;
Mellékelt példában tiltsuk le a Panel1 komponens újrarajzolását, majd az Invalidate gomb lenyomásával érvénytelenítsük a Form teljes területét. Ennek következtében minden komponens újrarajzolásra kerül, kivéve a Panel1-et.