Nașterea, viața și moartea unei forme Delphi

În Delphi, fiecare proiect are cel puțin o fereastră - fereastra principală a programului. Toate ferestrele unei aplicații Delphi sunt bazate pe Obiect TForm.

Formă

Forma obiecte sunt elementele de bază ale unei aplicații Delphi, ferestrele reale cu care un utilizator interacționează atunci când rulează aplicația. Formularele au propriile proprietăți, evenimente și metode cu care le puteți controla aspectul și comportamentul. Un formular este de fapt o componentă Delphi, dar spre deosebire de alte componente, o formă nu apare pe paleta de componente.

În mod normal, creăm un obiect formular începând o nouă aplicație (File | New Application). Acest formular nou creat va fi, implicit, formularul principal al aplicației - primul formular creat la rulare.

Notă: Pentru a adăuga o formă suplimentară proiectului Delphi, selectați Fișier | Nouă formă.

Naștere

OnCreate
Evenimentul OnCreate este lansat atunci când a fost creat pentru prima dată un TForm, adică o singură dată. Declarația responsabilă cu crearea formularului se află în sursa proiectului (dacă formularul este setat să fie creat automat de proiect). Când se creează un formular și proprietatea lui Vizibilă este adevărată, în ordinea listată apar următoarele evenimente: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Ar trebui să utilizați instrumentul OnCreate Handler pentru a face, de exemplu, sarcini de inițializare, cum ar fi alocarea listelor de șiruri.

Orice obiecte create la evenimentul OnCreate ar trebui eliberate de evenimentul OnDestroy.

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

OnShow
Acest eveniment indică faptul că este afișat formularul. OnShow este numit chiar înainte ca un formular să devină vizibil. În afară de formularele principale, acest eveniment se întâmplă atunci când setăm formulare Proprietate vizibilă la True, sau apelăm la metoda Show sau ShowModal.

OnActivate
Acest eveniment se numește atunci când programul activează formularul - adică atunci când formularul primește focalizarea de intrare. Utilizați acest eveniment pentru a schimba care controlul se concentrează efectiv dacă nu este cel dorit.

OnPaint, OnResize
Evenimente precum OnPaint și OnResize sunt întotdeauna apelate după crearea formularului inițial, dar sunt, de asemenea, apelate în mod repetat. OnPaint apare înainte ca orice control al formularului să fie vopsit (folosiți-l pentru vopsirea specială a formularului).

Viaţă

Nașterea unei forme nu este atât de interesantă încât viața și moartea ei pot fi. Când formularul dvs. este creat și toate controalele așteaptă să se ocupe evenimente, programul rulează până când cineva încearcă să închidă formularul!

Moarte

O aplicație bazată pe eveniment se oprește din funcționare atunci când toate formularele sale sunt închise și nu se execută niciun cod. Dacă există încă un formular ascuns când ultimul formular vizibil este închis, cererea dvs. pare să aibă încheiat (deoarece nu există forme vizibile), dar va continua să ruleze până când toate formele ascunse vor fi închis. Gândiți-vă doar la o situație în care forma principală se ascunde devreme și toate celelalte forme sunt închise.

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

OnCloseQuery
Când încercăm să închidem formularul folosind metoda Close sau prin alte mijloace (Alt + F4), se numește evenimentul OnCloseQuery. Astfel, gestionatorul de evenimente pentru acest eveniment este locul pentru a intercepta închiderea formularului și prevenirea acesteia. Folosim OnCloseQuery pentru a întreba utilizatorii dacă sunt siguri că doresc să închidă formularul.

procedură TForm1.FormCloseQuery (Expeditor: TObject; var CanClose: Boolean);

începe

dacăMessageDlg('Închideți cu adevărat această fereastră?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel apoi CanClose: = False;

Sfârșit; 

Un instrument de gestionare a evenimentelor OnCloseQuery conține o variabilă CanClose care determină dacă un formular este permis să se închidă. Manipulatorul de evenimente OnCloseQuery poate seta valoarea CloseQuery la False (prin parametrul CanClose), anulând metoda Close.

OnClose
Dacă OnCloseQuery indică faptul că formularul trebuie închis, se numește evenimentul OnClose.

Evenimentul OnClose ne oferă o ultimă șansă de a împiedica închiderea formularului. Manipulatorul de eveniment OnClose are un parametru Acțiune, cu următoarele patru valori posibile:

  • caNone. Formularul nu este permis să se închidă. La fel ca și cum am fi setat CanClose pe False în OnCloseQuery.
  • caHide. În loc să închizi formularul îl ascunzi.
  • caFree. Formularul este închis, deci memoria alocată este eliberată de Delphi.
  • caMinimize. Formularul este minimizat, mai degrabă decât închis. Aceasta este acțiunea implicită pentru formularele pentru copii MDI. Când un utilizator închide Windows, evenimentul OnCloseQuery este activat, nu OnClose. Dacă doriți să împiedicați Windows-ul să se oprească, introduceți codul în gestionarul de evenimente OnCloseQuery, bineînțeles CanClose = False nu va face acest lucru.

OnDestroy
După ce metoda OnClose a fost procesată și formularul urmează să fie închis, se numește evenimentul OnDestroy. Utilizați acest eveniment pentru operațiuni opuse celor din evenimentul OnCreate. OnDestroy este utilizat pentru a desloca obiecte legate de formă și pentru a elibera memoria corespunzătoare.

Când se închide formularul principal pentru un proiect, cererea se încheie.