Hogyan lehet megakadályozni egy összetevő újratervezését?

Hogyan tudom megakadályozni egyetlen komponens újradefiniálását?

Az űrlapon van a ListBox, amely a módszeren OnDraw olyan képletgyűjteményt tartalmaz, amely képeket képez, stb. A formanyomtatványok méretváltozásakor a levélszekrény újratervezése természetes módon fékezi a terhelést. Hogyan tudom kikapcsolni a rajzolási sorozatot, amely csak az űrlap méretének megváltoztatására szolgál?

A festés blokkolása: # xA0; # xA0;
# xA0; # xA0; SendMessage (TWinControl.Handle, WM_SETREDRAW, 0, 0)
feloldása:
# xA0; # xA0; SendMessage (TWinControl.Handle, WM_SETREDRAW, 1, 0);
# xA0; # xA0; RedrawWindow (TWinControl.Handle, null, 0,
# xA0; # xA0; # xA0; RDW_ERASE vagy RDW_FRAME vagy RDW_INVALIDATE vagy RDW_ALLCHILDREN);

És hogyan kell meghatározni a pillanatot, amikor megpróbálom megváltoztatni az űrlap méretét egy egérrel?

fogaskerék # xA0; (16 november 04 19:59) [3]

És hogyan kell meghatározni a pillanatot, amikor megpróbálom megváltoztatni az űrlap méretét egy egérrel?



eljárás TForm1.FormResize (Sender: TObject);
kezdődik

végén;

az alakváltozás során előfordul.

És hogyan lehet elkapni a pillanat kezdetét és végét, hogy a zárolást és a feloldást megfelelően megosszák?

Körülbelül ilyesmi, jóllehet az üzeneteken keresztül, helyesen fogok nézni.

eljárás TForm1.FormResize (Sender: TObject);
kezdődik
Form1.Caption: = "start";
végén;

eljárás TForm1.FormConstrainedResize (Feladó: TObject; var MinWidth,
# xA0; MinHeight, MaxWidth, MaxHeight: Integer);
kezdődik
# xA0; Form1.Caption: = "end";
végén;

# xA0; # xA0; Értesíti az ablakot, hogy a mérete megváltozott # xA0;

# xA0; # xA0; lParamLo: A felhasználói terület új szélessége
# xA0; # xA0; lParamHi: Új felhasználói terület magassága

kap valamit ilyesmi:


típus
# xA0; # xA0; # xA0; TForm1 = osztály (TForm)
# xA0; # xA0; # xA0; magán
# xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; WMSysCommand eljárás (var Msg: TWMSysCommand);
# xA0; # xA0; # xA0; üzenet WM_SYSCOMMAND;
# xA0; # xA0; # xA0; nyilvános
# xA0; # xA0; # xA0;
végén;

var
# xA0; # xA0; # xA0; Form1: TForm1;

eljárás TForm1.WMSysCommand;
kezdődik
# xA0; # xA0; # xA0; ha (Msg.CmdType = wm_Size), akkor

Igen, majdnem elfelejtettem, örököltem;

eljárás TForm1.WMSysCommand;
kezdődik
# xA0; ha (Msg.CmdType = wm_Size), akkor
örökölt;
végén;

> Gear (11/16/04 19:27)

1. Bemutatunk egy privát logikai mezőt, amely a formában van.

2. A WM_SIZING kezelő (átméretezés):
FResizing: = Igaz;
örökölt;

3. A WM_SIZE kezelő (a méretezés befejeződött):
FResizing: = hamis;
örökölt;

4. ListBox.OnDraw kezelő:
ha nem FResizing, akkor
kezdődik
# xA0;. // Itt van az összes kódod.
végén;

fogaskerék # xA0; (16.11.04 20:18) [8]
Köszönöm!

Balra, de megígérte, hogy visszatér!

Visszatértek, köszi ikrek! :)