Födelse, liv och död av en Delphi-form

I Delphi, har varje projekt minst ett fönster - programmets huvudfönster. Alla fönster i en Delphi-applikation är baserade på TForm-objekt.

Form

Forma objekt är de grundläggande byggstenarna i en Delphi-applikation, de faktiska fönstren som en användare interagerar med när de kör applikationen. Blanketter har sina egna egenskaper, händelser och metoder som du kan kontrollera deras utseende och beteende med. En form är faktiskt en Delphi-komponent, men till skillnad från andra komponenter visas inte en form på komponentpaletten.

Vi skapar normalt ett formulärobjekt genom att starta en ny applikation (File | New Application). Detta nyskapade formulär kommer som standard att vara applikationens huvudformulär - det första formuläret som skapats vid körning.

Obs! Om du vill lägga till ett ytterligare formulär till Delphi-projektet väljer du Arkiv | Ny form.

Födelse

onCreate
Händelsen OnCreate avfyras när en TForm först skapas, det vill säga bara en gång. Anvisningen som är ansvarig för att skapa formuläret finns i projektets källa (om formuläret är inställt för att automatiskt skapas av projektet). När ett formulär skapas och dess synliga egenskap är sant, inträffar följande händelser i den ordning som anges: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Du bör använda OnCreate-händelseshanteraren för att till exempel göra initialiseringsarbeten som tilldelning av stränglistor.

Alla objekt som skapats i OnCreate-händelsen bör frigöras av OnDestroy-händelsen.

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

På show
Den här händelsen indikerar att formuläret visas. OnShow kallas precis innan ett formulär blir synligt. Förutom huvudformer inträffar denna händelse när vi ställer formulär Synlig egenskap till Sann eller kallar metoden Show eller ShowModal.

OnActivate
Denna händelse kallas när programmet aktiverar formuläret - det vill säga när formuläret får inmatningsfokus. Använd den här händelsen för att ändra vilken kontroll som faktiskt får fokus om det inte är den önskade.

OnPaint, OnResize
Händelser som OnPaint och OnResize kallas alltid efter att formen ursprungligen skapades, men kallas också upprepade gånger. OnPaint inträffar innan några kontroller på formen målas (använd den för specialmålning på formuläret).

Liv

Födelsen av en form är inte så intressant som dess liv och död kan vara. När ditt formulär skapas och alla kontroller väntar på att händelser ska hanteras körs programmet tills någon försöker stänga formuläret!

Död

En händelsestyrd applikation slutar att köra när alla dess former är stängda och ingen kod körs. Om en dold form fortfarande finns när det sista synliga formuläret stängs verkar din ansökan ha slutade (eftersom inga former är synliga), men kommer faktiskt fortsätta att köras tills alla dolda former är stängd. Tänk bara på en situation där huvudformen gömmer sig tidigt och alla andra former är stängda.

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

OnCloseQuery
När vi försöker stänga formuläret med hjälp av Close-metoden eller på annat sätt (Alt + F4), kallas OnCloseQuery-händelsen. Således är händelsehanteraren för denna händelse platsen att avlyssna ett formulärs stängning och förhindra det. Vi använder OnCloseQuery för att fråga användarna om de är säkra på att de verkligen vill att formuläret ska stängas.

procedur TForm1.FormCloseQuery (avsändare: TObject; var CanClose: Boolean);

Börja

omMessageDlg('Stäng det här fönstret verkligen?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel sedan CanClose: = Falsk;

slutet; 

En OnCloseQuery-händelseshanterare innehåller en CanClose-variabel som avgör om ett formulär får stängas. Händelseshanteraren OnCloseQuery kan ställa in värdet på CloseQuery till False (via CanClose-parametern) och avbryta stängningsmetoden.

OnClose
Om OnCloseQuery indikerar att formuläret ska stängas, kallas OnClose-händelsen.

OnClose-evenemanget ger oss en sista chans att förhindra att formuläret stängs. Händelseshanteraren OnClose har en åtgärdsparameter, med följande fyra möjliga värden:

  • canone. Formuläret får inte stängas. Precis som om vi har ställt in CanClose till False i OnCloseQuery.
  • Cahide. I stället för att stänga formuläret döljer du det.
  • caFree. Formuläret är stängt, så det tilldelade minnet frigörs av Delphi.
  • caMinimize. Formen minimeras snarare än stängd. Detta är standardåtgärden för MDI-barnformulär. När en användare stänger av Windows aktiveras OnCloseQuery-händelsen, inte OnClose. Om du vill förhindra att Windows stängs av lägger du in din kod i händelseshanteraren OnCloseQuery, naturligtvis kommer inte CanClose = False att göra det.

OnDestroy
När OnClose-metoden har behandlats och formuläret ska stängas, kallas OnDestroy-händelsen. Använd den här händelsen för åtgärder som är motsatta av dem i OnCreate-händelsen. OnDestroy används för att omlokalisera objekt relaterade till formen och frigöra motsvarande minne.

När huvudformuläret för ett projekt stängs avslutas applikationen.