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 :)