Fødsel, liv og død af en Delphi-form

I Delphi, hvert projekt har mindst et vindue - programmets hovedvindue. Alle windows i en Delphi-applikation er baseret på TForm-objekt.

Form

Form objekter er de grundlæggende byggesten i en Delphi-applikation, de faktiske vinduer, som en bruger interagerer med, når de kører applikationen. Formularer har deres egne egenskaber, begivenheder og metoder, som du kan kontrollere deres udseende og opførsel på. En form er faktisk en Delphi-komponent, men i modsætning til andre komponenter vises der ikke en form på komponentpaletten.

Vi opretter normalt et formularobjekt ved at starte en ny applikation (File | New Application). Denne nyoprettede formular er som standard applikationens hovedformular - den første formular, der oprettes på runtime.

Bemærk: Vælg Filer | for at tilføje en yderligere formular til Delphi-projektet Ny form.

Fødsel

onCreate
Begivenheden OnCreate affyres, når der først oprettes en TForm, det vil sige kun én gang. Den erklæring, der er ansvarlig for at oprette formularen, ligger i projektets kilde (hvis formularen er indstillet til automatisk at oprettes af projektet). Når der oprettes en formular, og dens synlige egenskab er sandt, forekommer følgende begivenheder i den angivne rækkefølge: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Du skal bruge OnCreate-begivenhedshåndtereren til at udføre for eksempel initialiseringsopgaver som tildeling af strenglister.

Eventuelle objekter oprettet i OnCreate-begivenheden skal frigøres af OnDestroy-begivenheden.

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

OnShow
Denne begivenhed viser, at formularen vises. OnShow kaldes lige før en form bliver synlig. Udover hovedformularer, sker denne begivenhed, når vi indstiller formularer Synlig egenskab til Sand, eller kalder Show- eller ShowModal-metoden.

OnActivate
Denne begivenhed kaldes, når programmet aktiverer formularen - det vil sige når formularen modtager inputfokus. Brug denne begivenhed til at ændre, hvilken kontrol der faktisk får fokus, hvis det ikke er den ønskede.

OnPaint, OnResize
Begivenheder som OnPaint og OnResize kaldes altid, når formen oprindeligt blev oprettet, men kaldes også gentagne gange. OnPaint forekommer, inden kontrol af formen males (brug den til speciel maling på formularen).

Liv

Fødselen af ​​en form er ikke så interessant, som dens liv og død kan være. Når din formular er oprettet, og alle kontrollerne venter på, at begivenheder skal håndteres, kører programmet, indtil nogen prøver at lukke formularen!

Død

En begivenhedsstyret applikation stopper med at køre, når alle dens formularer er lukket, og ingen kode kører. Hvis der stadig findes en skjult form, når den sidste synlige formular lukkes, ser det ud til, at din ansøgning har sluttede (fordi ingen formularer er synlige), men vil faktisk fortsætte med at køre, indtil alle skjulte formularer er lukket. Bare tænk på en situation, hvor hovedformen bliver skjult tidligt, og alle andre former er lukket.

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

OnCloseQuery
Når vi forsøger at lukke formularen ved hjælp af Close-metoden eller på anden måde (Alt + F4), kaldes OnCloseQuery-begivenheden. Begivenhedshåndterer for denne begivenhed er således stedet at aflytte en forms lukning og forhindre den. Vi bruger OnCloseQuery til at spørge brugerne, om de er sikre på, at de virkelig ønsker, at formularen skal lukke.

procedure TForm1.FormCloseQuery (Afsender: TObject; Var CanClose: Boolsk);

begynde

hvisMessageDlg('Luk dette vindue virkelig?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel derefter CanClose: = Falsk;

ende; 

En OnCloseQuery-begivenhedshåndterer indeholder en CanClose-variabel, der bestemmer, om en formular må lukke. Begivenhedshåndtereren OnCloseQuery kan muligvis indstille værdien på CloseQuery til False (via CanClose-parameteren) ved at afbryde Close-metoden.

OnClose
Hvis OnCloseQuery indikerer, at formularen skal lukkes, kaldes OnClose-begivenheden.

OnClose-begivenheden giver os en sidste chance for at forhindre formularen i at lukke. OnClose-begivenhedshåndtereren har en handlingsparameter med følgende fire mulige værdier:

  • canone. Formularen må ikke lukke. Ligesom hvis vi har indstillet CanClose til False i OnCloseQuery.
  • caHide. I stedet for at lukke formularen skjuler du den.
  • caFree. Formularen er lukket, så den tildelte hukommelse frigøres af Delphi.
  • caMinimize. Formen minimeres snarere end lukket. Dette er standardhandlingen for MDI-underordnede former. Når en bruger lukker Windows, aktiveres OnCloseQuery-begivenheden, ikke OnClose. Hvis du vil forhindre, at Windows lukker ned, skal du sætte din kode i OnCloseQuery-begivenhedshåndtereren, selvfølgelig gør CanClose = False ikke dette.

OnDestroy
Når OnClose-metoden er behandlet, og formularen skal lukkes, kaldes OnDestroy-begivenheden. Brug denne begivenhed til operationer modsat dem i OnCreate-begivenheden. OnDestroy bruges til at omfordele objekter relateret til formen og frigøre den tilsvarende hukommelse.

Når hovedformularen for et projekt lukkes, afsluttes applikationen.