De geboorte, het leven en de dood van een Delphi-vorm

click fraud protection

In Delphiheeft elk project minstens één venster: het hoofdvenster van het programma. Alle vensters van een Delphi-applicatie zijn gebaseerd op TForm-object.

Het formulier

Vorm objecten zijn de basisbouwstenen van een Delphi-applicatie, de daadwerkelijke vensters waarmee een gebruiker interactie heeft wanneer hij de applicatie uitvoert. Formulieren hebben hun eigen eigenschappen, gebeurtenissen en methoden waarmee u hun uiterlijk en gedrag kunt bepalen. Een formulier is eigenlijk een Delphi-component, maar in tegenstelling tot andere componenten verschijnt een formulier niet in het componentenpalet.

Normaal gesproken maken we een formulierobject door een nieuwe applicatie te starten (Bestand | Nieuwe applicatie). Dit nieuw gemaakte formulier is standaard het hoofdformulier van de toepassing - het eerste formulier dat tijdens runtime is gemaakt.

Opmerking: Selecteer Bestand | om een ​​extra formulier aan het Delphi-project toe te voegen Nieuw formulier.

Geboorte

OnCreate
De OnCreate-gebeurtenis wordt geactiveerd wanneer een TForm voor het eerst wordt gemaakt, dat wil zeggen slechts één keer. De verklaring die verantwoordelijk is voor het maken van het formulier bevindt zich in de bron van het project (als het formulier is ingesteld om automatisch door het project te worden gemaakt). Wanneer een formulier wordt gemaakt en de zichtbare eigenschap True is, vinden de volgende gebeurtenissen plaats in de aangegeven volgorde: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

U moet de OnCreate-gebeurtenishandler gebruiken om bijvoorbeeld initialisatie-taken uit te voeren, zoals het toewijzen van tekenreeksen.

Alle objecten die in de OnCreate-gebeurtenis zijn gemaakt, moeten worden vrijgegeven door de OnDestroy-gebeurtenis.

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

OnShow
Deze gebeurtenis geeft aan dat het formulier wordt weergegeven. OnShow wordt aangeroepen net voordat een formulier zichtbaar wordt. Naast de belangrijkste formulieren, gebeurt deze gebeurtenis wanneer we de eigenschap Visible op True zetten of de Show- of ShowModal-methode aanroepen.

OnActivate
Deze gebeurtenis wordt aangeroepen wanneer het programma het formulier activeert, dat wil zeggen wanneer het formulier de invoerfocus ontvangt. Gebruik deze gebeurtenis om te wijzigen welke besturing daadwerkelijk focus krijgt als dit niet de gewenste is.

OnPaint, OnResize
Gebeurtenissen zoals OnPaint en OnResize worden altijd aangeroepen nadat het formulier in eerste instantie is gemaakt, maar worden ook herhaaldelijk aangeroepen. OnPaint vindt plaats voordat er bedieningselementen op het formulier zijn geverfd (gebruik deze voor speciaal schilderen op het formulier).

Leven

De geboorte van een vorm is niet zo interessant als zijn leven en dood kan zijn. Wanneer uw formulier is gemaakt en alle bedieningselementen wachten op af te handelen gebeurtenissen, wordt het programma uitgevoerd totdat iemand probeert het formulier te sluiten!

Dood

Een gebeurtenisgestuurde toepassing stopt met werken wanneer alle formulieren zijn gesloten en er geen code wordt uitgevoerd. Als er nog een verborgen formulier bestaat wanneer het laatste zichtbare formulier wordt gesloten, lijkt uw aanvraag dat te hebben beëindigd (omdat er geen formulieren zichtbaar zijn), maar zal in feite blijven lopen totdat alle verborgen formulieren dat zijn Gesloten. Denk maar aan een situatie waarin het hoofdformulier vroegtijdig wordt verborgen en alle andere vormen worden gesloten.

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

OnCloseQuery
Wanneer we proberen het formulier te sluiten met de methode Sluiten of op een andere manier (Alt + F4), wordt de OnCloseQuery-gebeurtenis aangeroepen. De gebeurtenishandler voor deze gebeurtenis is dus de plaats om het sluiten van een formulier te onderscheppen en te voorkomen. We gebruiken de OnCloseQuery om de gebruikers te vragen of ze zeker weten dat ze het formulier echt willen sluiten.

procedure TForm1.FormCloseQuery (Afzender: TObject; var CanClose: Boolean);

beginnen

alsMessageDlg('Dit venster echt sluiten?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel vervolgens CanClose: = False;

einde; 

Een OnCloseQuery-gebeurtenishandler bevat een CanClose-variabele die bepaalt of een formulier mag worden gesloten. De OnCloseQuery-gebeurtenishandler kan de waarde van CloseQuery instellen op False (via de CanClose-parameter), waardoor de methode Close wordt afgebroken.

OnClose
Als OnCloseQuery aangeeft dat het formulier moet worden gesloten, wordt de OnClose-gebeurtenis aangeroepen.

Het OnClose-evenement geeft ons een laatste kans om te voorkomen dat het formulier sluit. De OnClose-gebeurtenishandler heeft een actieparameter, met de volgende vier mogelijke waarden:

  • caNone. Het formulier mag niet worden gesloten. Net alsof we de CanClose hebben ingesteld op False in de OnCloseQuery.
  • ca Verbergen. In plaats van het formulier te sluiten, verberg je het.
  • caFree. Het formulier is gesloten, dus het toegewezen geheugen wordt vrijgegeven door Delphi.
  • ca Minimaliseren. Het formulier is geminimaliseerd in plaats van gesloten. Dit is de standaardactie voor MDI-onderliggende formulieren. Wanneer een gebruiker Windows afsluit, wordt de OnCloseQuery-gebeurtenis geactiveerd, niet de OnClose. Als u wilt voorkomen dat Windows wordt afgesloten, plaatst u uw code in de OnCloseQuery-gebeurtenishandler, natuurlijk kan CanClose = False dit niet doen.

OnDestroy
Nadat de OnClose-methode is verwerkt en het formulier moet worden gesloten, wordt de OnDestroy-gebeurtenis aangeroepen. Gebruik deze gebeurtenis voor bewerkingen die tegengesteld zijn aan die in de OnCreate-gebeurtenis. OnDestroy wordt gebruikt om objecten gerelateerd aan het formulier te dealloceren en het bijbehorende geheugen vrij te maken.

Wanneer het hoofdformulier voor een project wordt gesloten, wordt de aanvraag beëindigd.

instagram story viewer