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

click fraud protection

I Delphi, hvert prosjekt har minst ett vindu - programmets hovedvindu. Alle vinduer i en Delphi-applikasjon er basert på TForm-objekt.

Form

Form objekter er de grunnleggende byggesteinene i et Delphi-program, de faktiske vinduene som en bruker samhandler med når de kjører applikasjonen. Skjemaer har sine egne egenskaper, hendelser og metoder du kan kontrollere deres utseende og oppførsel med. En form er faktisk en Delphi-komponent, men i motsetning til andre komponenter, vises det ikke en form på komponentpaletten.

Vi oppretter normalt et skjemaobjekt ved å starte en ny applikasjon (File | New Application). Dette nyopprettede skjemaet er som standard programmets hovedskjema - det første skjemaet som ble opprettet ved kjøretid.

Merk: Hvis du vil legge til et tilleggsskjema til Delphi-prosjektet, velger du File | Ny form.

Fødsel

onCreate
OnCreate-hendelsen blir avfyrt når en TForm først opprettes, det vil si bare en gang. Erklæringen som er ansvarlig for å lage skjemaet ligger i prosjektets kilde (hvis skjemaet er satt til å opprettes automatisk av prosjektet). Når et skjema opprettes og den synlige egenskapen er sann, oppstår følgende hendelser i rekkefølgen som er oppført: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Du bør bruke OnCreate-hendelsesbehandleren til å gjøre for eksempel initialiseringsarbeid som å tildele strengelister.

Alle objekter som er opprettet i OnCreate-hendelsen, bør frigjøres av OnDestroy-hendelsen.

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

OnShow
Denne hendelsen indikerer at skjemaet vises. OnShow kalles like før et skjema blir synlig. I tillegg til hovedformer, skjer denne hendelsen når vi setter formene Synlig egenskap til True, eller kaller Show- eller ShowModal-metoden.

OnActivate
Denne hendelsen kalles når programmet aktiverer skjemaet - det vil si når skjemaet mottar inngangsfokus. Bruk denne hendelsen til å endre hvilken kontroll som faktisk får fokus hvis den ikke er den ønsket.

OnPaint, OnResize
Hendelser som OnPaint og OnResize blir alltid kalt etter at skjemaet opprinnelig ble opprettet, men blir også kalt gjentatte ganger. OnPaint oppstår før noen kontroller på skjemaet er malt (bruk det til spesialmaling på skjemaet).

Liv

Fødselen av en form er ikke så interessant som dens liv og død kan være. Når skjemaet ditt er opprettet og alle kontrollene venter på at hendelser skal håndteres, kjører programmet til noen prøver å lukke skjemaet!

Død

Et hendelsesstyrt program slutter å kjøre når alle skjemaene er lukket og ingen kode kjøres. Hvis et skjult skjema fremdeles eksisterer når det siste synlige skjemaet er lukket, ser det ut til at applikasjonen din har avsluttet (fordi ingen skjemaer er synlige), men vil faktisk fortsette å kjøre til alle skjulte skjemaer er lukket. Bare tenk på en situasjon der hovedformen blir gjemt tidlig og alle andre former er lukket.

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

OnCloseQuery
Når vi prøver å lukke skjemaet ved hjelp av Close-metoden eller på andre måter (Alt + F4), kalles OnCloseQuery-hendelsen. Dermed er hendelsesbehandler for denne hendelsen stedet å avskjære et skjemaets lukking og forhindre det. Vi bruker OnCloseQuery for å spørre brukerne om de er sikre på at de virkelig vil at skjemaet skal lukkes.

fremgangsmåte TForm1.FormCloseQuery (Avsender: TObject; Var CanClose: Boolean);

begynne

hvisMessageDlg('Lukk dette vinduet virkelig?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel deretter CanClose: = Falske;

slutt; 

En hendelsehåndterer OnCloseQuery inneholder en CanClose-variabel som bestemmer om et skjema får lov til å lukke. Hendelsesbehandleren på OnCloseQuery kan stille verdien av CloseQuery til False (via CanClose-parameteren), og avbryter Close-metoden.

OnClose
Hvis OnCloseQuery indikerer at skjemaet skal lukkes, kalles OnClose-hendelsen.

OnClose-arrangementet gir oss en siste sjanse til å forhindre at skjemaet lukkes. Hendelsesbehandleren på OnClose har en handlingsparameter, med følgende fire mulige verdier:

  • canone. Skjemaet får ikke lukke. Akkurat som om vi har satt CanClose til False i OnCloseQuery.
  • caHide. I stedet for å lukke skjemaet skjuler du det.
  • caFree. Skjemaet er lukket, så det tildelte minnet frigjøres av Delphi.
  • caMinimize. Skjemaet er minimert, i stedet for lukket. Dette er standardhandlingen for MDI-underordnede former. Når en bruker slår av Windows, aktiveres OnCloseQuery-hendelsen, ikke OnClose. Hvis du vil forhindre at Windows lukker seg, legger du koden i hendelsesbehandleren på OnCloseQuery, selvfølgelig vil ikke CanClose = False gjøre dette.

OnDestroy
Etter at OnClose-metoden er behandlet og skjemaet skal lukkes, kalles OnDestroy-hendelsen. Bruk denne hendelsen til operasjoner motsatt av dem i OnCreate-hendelsen. OnDestroy brukes til å omfordele objekter relatert til skjemaet og frigjøre det tilsvarende minnet.

Når hovedskjemaet for et prosjekt lukkes, avsluttes applikasjonen.

instagram story viewer