In Delphi heeft elk project ten minste één venster - het hoofdvenster van het programma. Alle vensters van een Delphi-toepassing zijn gebaseerd op het TForm-object.
Formulierobjecten zijn de basisbouwstenen van een Delphi-toepassing, de daadwerkelijke vensters waarmee een gebruiker samenwerkt wanneer deze de toepassing 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 toepassing te starten (Bestand | Nieuwe toepassing). Dit nieuw gemaakte formulier is standaard het hoofdformulier van de toepassing - het eerste formulier dat tijdens runtime wordt gemaakt.
Opmerking: Selecteer Bestand | Nieuw formulier om een extra formulier aan het Delphi-project toe te voegen.
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 staat 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 eigenschap Visible waar is, vinden de volgende gebeurtenissen plaats in de aangegeven volgorde: OnCreate, OnShow, OnActivate, OnPaint.
U moet de OnCreate-gebeurtenishandler gebruiken om bijvoorbeeld initialisatiekarweien te doen, zoals het toewijzen van stringlijsten.
Alle objecten gemaakt in de OnCreate-gebeurtenis 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 hoofdvormen vindt deze gebeurtenis plaats wanneer we de eigenschap Visible van formulieren instellen op True of de methode Show of ShowModal aanroepen.
OnActivate
Deze gebeurtenis wordt genoemd wanneer het programma het formulier activeert, dat wil zeggen wanneer het formulier de invoerfocus krijgt. Gebruik deze gebeurtenis om te wijzigen welke controle daadwerkelijk de focus krijgt als deze niet de gewenste is.
OnPaint, OnResize
Gebeurtenissen zoals OnPaint en OnResize worden altijd genoemd nadat het formulier oorspronkelijk is gemaakt, maar worden ook herhaaldelijk genoemd. OnPaint treedt op voordat besturingselementen op het formulier worden geverfd (gebruik het voor speciaal schilderen op het formulier).
De geboorte van een vorm is niet zo interessant als zijn leven en dood kan zijn. Wanneer uw formulier is gemaakt en alle besturingselementen wachten op afhandeling van gebeurtenissen, blijft het programma actief totdat iemand het formulier probeert te sluiten!
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 toepassing te zijn beëindigd (omdat er geen formulieren zichtbaar zijn), maar blijft deze actief totdat alle verborgen formulieren zijn gesloten. Denk maar aan een situatie waarin de hoofdvorm vroeg 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 gebeurtenis OnCloseQuery aangeroepen. Zo is de gebeurtenishandler voor deze gebeurtenis de plek 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 (Sender: TObject; var CanClose: Boolean);
beginnen
als MessageDlg ('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 gebeurtenishandler OnCloseQuery kan de waarde van CloseQuery op False instellen (via de parameter CanClose), 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 wordt gesloten. De OnClose-gebeurtenishandler heeft een Action-parameter, met de volgende vier mogelijke waarden:
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 aan de vorm gerelateerde objecten te dealloceren en het bijbehorende geheugen vrij te maken.
Wanneer het hoofdformulier voor een project wordt gesloten, wordt de toepassing beëindigd.