Lumea Delphi - nașterea, viața și moartea formei

Nașterea, viața și moartea formei

(Traducerea articolului cu același nume de la delphi.about.com)

În Windows, elementul principal al interfeței cu utilizatorul este un formular. În Delphi, fiecare proiect are cel puțin o fereastră - fereastra principală a aplicației. Toate ferestrele din Delphi se bazează pe obiectul TForm. În acest articol vom analiza principalele evenimente implicate în "formele de viață".







Formularele au proprietățile, evenimentele și metodele prin care puteți controla forma și comportamentul formularului. Forma este o componentă regulată a Delphi, dar spre deosebire de altele, ea nu există în panoul component. În mod obișnuit, se creează un formular atunci când se creează un nou proiect (File | New Application). Forma nou creată va fi forma principală a aplicației.

Formulare suplimentare în proiect sunt create prin intermediul fișierului | Formular nou. Există și alte modalități de a crea forme, dar aici nu le vom lua în considerare.

Ca orice altă componentă (obiect), forma are propriile sale metode și răspunde la evenimente. Să ne uităm la unele dintre aceste evenimente.

OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint.

Evenimentul OnCreate apare atunci când TForm este creat și o singură dată. Când creați un formular (la proprietatea Vizibil Cator este setat la True), evenimentele vor avea loc în următoarea ordine: OnCreate, OnShow, OnActivate, OnPaint. În instrumentul de procesare a evenimentului OnCreate, puteți face o inițializare, totuși, orice obiecte create în OnCreate vor fi distruse în evenimentul OnDestroy.

Acest eveniment este generat atunci când formularul devine vizibil. OnShow este chemat chiar înainte ca formularul să devină vizibil. Acest eveniment se întâmplă dacă setați proprietatea Visible la True sau când apelați metodele Show sau ShowModal.

Acest eveniment este generat când formularul devine activ, adică când formularul primește focalizare de intrare. Acest eveniment poate fi folosit pentru a schimba elementul de formă care ar trebui să primească focalizare.







OnPaint, OnResize Aceste evenimente sunt numite de fiecare dată când forma este creată. În același OnPaint se numește de fiecare dată într-o anumită formă de elemente trebuie să fie revopsit (acest eveniment poate fi utilizat, dacă este necesar, în același timp, trage pe formular este ceva special).

Atunci când formularul este creat și toate elementele sale așteaptă ca evenimentele să le proceseze, viața formei continuă până când cineva face clic pe o cruce în colțul din dreapta sus al formularului!

Atunci când un formular este distrus, evenimentele sunt generate în următoarea ordine:

OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy

Dacă încercăm să închidem formularul folosind metoda de închidere sau prin altă metodă disponibilă (Alt + F4 sau prin meniul sistemului), evenimentul OnCloseQuery va fi generat. Astfel, acest eveniment poate fi folosit pentru a împiedica închiderea formularului. De obicei, evenimentul OnCloseQuery este folosit pentru a întreba utilizatorul dacă este sigur (probabil că există date nesalvate în aplicație).

Managerul de evenimente OnCloseQuery conține variabila CanClose, care determină dacă formularul poate fi închis. Valoarea inițială a acestei variabile este Adevărată. Cu toate acestea, în handlerul OnCloseQuery, puteți seta valoarea returnată CloseQuery la False pentru a anula metoda Close.

Dacă OnCloseQuery a returnat CanClose = True (ceea ce indică închiderea formularului), evenimentul OnClose va fi generat. Evenimentul OnClose oferă ultima șansă de a împiedica închiderea formularului. Handlerul OnClose are un parametru Action cu următoarele patru valori posibile: caNone. Formularul nu este permis să se închidă. Este ca și cum am setat CanClose la fals în OnCloseQuery. caHide. În loc să închidă, formularul va fi ascuns. caFree. Formularul va fi închis, iar resursele pe care le va utiliza vor fi eliberate. caMinimize. În loc de închidere, formularul va fi minimizat. Această valoare este setată implicit în formularele MDI pentru copii.

Notă: Când un utilizator glumește Windows, acesta va fi numit OnCloseQuery, nu OnClose. Dacă nu doriți ca Windows să își finalizeze activitatea, apoi pune codul în tratare a evenimentului OnCloseQuery deși CanClose = Fals nu, ceea ce sa făcut aici.

După ce metoda OnClose este procesată și formularul este închis, evenimentul OnDestroy va fi apelat. În OnCreate, de obicei faceți acțiuni care sunt opuse celor efectuate în OnCreate, adică distrugerea obiectelor create și eliberarea memoriei alocate.

Este firesc ca atunci când forma principală a proiectului este închisă, cererea va fi finalizată.







Trimiteți-le prietenilor: