Hur man skapar, använder och stänger formulär i Delphi

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

Formobjekt är de grundläggande byggstenarna i en Delphi-applikation, de verkliga 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 i Delphi-projektet väljer du Arkiv | Nytt formulär.

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.

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 Show eller ShowModal-metoden.

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 existerar när den sista synliga formen är stängd verkar din ansökan ha slutat (eftersom inga formulär är synliga), men kommer faktiskt fortsätta att köras tills alla dolda formulär är stängda. 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 Stängmetoden 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

   om MessageDlg ('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 Windows från att stänga av, lägger du din kod i händelseshanteraren OnCloseQuery, naturligtvis kommer CanClose = False inte att göra detta.

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.