Cum să preveniți redragerea unei singure componente

Cum pot preveni revopsirea unei singure componente?

In forma care trebuie metoda ListBox OnDraw formule pilonilor care formează liniile de ieșire ale unei imagini, și așa mai departe. N. reproiectării forma listboksa inhiba redimensionarea salbatic in mod natural din cauza încărcării sale. Cum se dezactivează retrasarea listboksa este redimensionată este perioada de forma?







Repararea blocului: # xA0; # xA0;
# xA0; # xA0; SendMessage (TWinControl.Handle, WM_SETREDRAW, 0, 0)
debloca:
# xA0; # xA0; SendMessage (TWinControl.Handle, WM_SETREDRAW, 1, 0);
# xA0; # xA0; RedrawWindow (TWinControl.Handle, zero, 0,
# xA0; # xA0; # xA0; RDW_ERASE sau RDW_FRAME sau RDW_INVALIDATE sau RDW_ALLCHILDREN);

Și cum să determinăm momentul când încerc să schimb mărimea formularului cu un mouse?

viteză # xA0; (16 noiembrie 04 19:59) [3]

Și cum să determinăm momentul când încerc să schimb mărimea formularului cu un mouse?



procedura TForm1.FormResize (expeditor: TObject);
începe

se încheie;

apare în cursul schimbării formei.

Și cum să prindeți începutul și sfârșitul acestui moment pentru a trimite blocarea și deblocarea în consecință?







Aproximativ așa, chiar dacă în mod corect prin mesaje, mă uit.

procedura TForm1.FormResize (expeditor: TObject);
începe
Form1.Caption: = "start";
se încheie;

procedura TForm1.FormConstrainedResize (Expeditor: TObject; var MinWidth,
# xA0; MinHeight, MaxWidth, MaxHeight: Integer);
începe
# xA0; Form1.Caption: = "sfârșit";
se încheie;

# xA0; # xA0; Notifică fereastra că dimensiunea sa sa modificat # xA0;

# xA0; # xA0; lParamLo: Nouă lățime a zonei de utilizator
# xA0; # xA0; lParamHi: Nouă înălțime a zonei de utilizator

prinde ceva de genul:


tip
# xA0; # xA0; # xA0; TForm1 = clasa (TForm)
# xA0; # xA0; # xA0; privat
# xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; procedura WMSysCommand (var Msg: TWMSysCommand);
# xA0; # xA0; # xA0; mesaj WM_SYSCOMMAND;
# xA0; # xA0; # xA0; public
# xA0; # xA0; # xA0;
se încheie;

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

procedura TForm1.WMSysCommand;
începe
# xA0; # xA0; # xA0; dacă (Msg.CmdType = wm_Size) atunci

Da, aproape că am uitat, adaugă moștenit;

procedura TForm1.WMSysCommand;
începe
# xA0; dacă (Msg.CmdType = wm_Size) atunci
moștenit;
se încheie;

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

1. Introducem un câmp boolean privat FResizing în formular.

2. Handler-ul WM_SIZING (redimensionare):
FRESIZARE: = adevărat;
moștenit;

3. Handler-ul WM_SIZE (redimensionarea este finalizată):
Frazare: = Fals;
moștenit;

4. Handler ListBox.OnDraw:
dacă nu este FRESIZARE atunci
începe
# xA0;. // Aici este tot codul tău.
se încheie;

viteză # xA0; (16.11.04 20:18) [8]
Mulțumesc!

Stânga, dar a promis să se întoarcă!

Reveniti, multumiti de gemeni :)







Trimiteți-le prietenilor: