Rojstvo, življenje in smrt oblike Delphi

V Delphi, vsak projekt ima vsaj eno okno - glavno okno programa. Vsa okna aplikacije Delphi temeljijo na Predmet TForm.

Oblika

Oblikujte predmete so osnovni gradniki aplikacije Delphi, dejanska okna, s katerimi uporabnik sodeluje, ko zažene aplikacijo. Obrazci imajo svoje lastnosti, dogodke in metode, s katerimi lahko nadzorujete njihov videz in vedenje. Oblika je pravzaprav komponenta Delphi, vendar se za razliko od drugih komponent oblika ne pojavlja na paleti komponent.

Predmet obrazca običajno ustvarimo z zagonom nove aplikacije (Datoteka | Nova aplikacija). Ta novo ustvarjena oblika bo privzeto glavni obrazec aplikacije - prvi obrazec, ustvarjen med izvajanjem.

Opomba: Če želite dodati dodaten obrazec projektu Delphi, izberite Datoteka | Nov obrazec.

Rojstvo

OnCreate
Dogodek OnCreate se sproži, ko je TForm prvič ustvarjen, torej samo enkrat. Izjava, odgovorna za oblikovanje obrazca, je v izvoru projekta (če je obrazec nastavljen tako, da ga samodejno ustvari projekt). Ko se oblikuje obrazec in je njegova vidna lastnost True, se v zaporedju, ki je naveden, zgodijo naslednji dogodki: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Za izvajanje inicializacijskih opravkov, kot je dodeljevanje seznamov nizov, bi morali uporabiti orodje za obdelavo dogodkov OnCreate.

Vse predmete, ustvarjene v dogodku OnCreate, bi moral sprostiti dogodek OnDestroy.

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

OnShow
Ta dogodek pomeni, da se obrazec prikazuje. OnShow se pokliče tik preden postane obrazec viden. Poleg glavnih obrazcev se ta dogodek zgodi, ko lastnost obrazcev Visible nastavimo na True ali pokličemo metodo Show ali ShowModal.

Vklopljeno
Ta dogodek se imenuje, ko program aktivira obrazec - torej, ko obrazec prejme vhodni fokus. S tem dogodkom spremenite, kateri nadzor dejansko postane osredotočen, če ni želeni.

OnPaint, OnResize
Dogodki, kot sta OnPaint in OnResize, se vedno pokličejo po tem, ko je obrazec na začetku ustvarjen, vendar jih tudi kličejo večkrat. OnPaint se zgodi, preden so poljubni kontrolniki na obrazcu (uporabite ga za posebno slikanje na obrazcu).

Življenje

Rojstvo oblike ni tako zanimivo, kot sta lahko življenje in smrt. Ko je obrazec ustvarjen in vsi kontrolniki čakajo na urejanje dogodkov, program teče, dokler nekdo ne poskusi zapreti obrazca!

Smrt

Aplikacija, ki temelji na dogodkih, preneha delovati, ko so vsi obrazci zaprti in se nobena koda ne izvaja. Če še vedno obstaja skrita oblika, ko je zadnji vidni obrazec zaprt, bo videti, da ima vaša aplikacija končalo (ker ni vidnih nobenih obrazcev), ampak se bo dejansko še naprej izvajalo, dokler niso vsi skriti obrazci zaprto. Pomislite samo na situacijo, ko se glavna oblika zgodaj skrije, vse druge oblike pa se zaprejo.

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

OnCloseQuery
Ko poskušamo zapreti obrazec po metodi Close ali na druge načine (Alt + F4), se pokliče dogodek OnCloseQuery. Tako je obdelovalec tega dogodka kraj, da prestreže zapiranje obrazca in ga prepreči. Uporabljamo OnCloseQuery, da uporabnike vprašamo, če so prepričani, da resnično želijo, da se obrazec zapre.

postopek TForm1.FormCloseQuery (Pošiljatelj: TObject; var CanClose: Boolean);

začeti

čeSporočiloDlg('Resnično zaprete to okno?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel torej CanClose: = napačno;

konec; 

Obdelovalec dogodkov OnCloseQuery vsebuje spremenljivko CanClose, ki določa, ali je dovoljeno zapiranje obrazca. Obdelovalec dogodkov OnCloseQuery lahko nastavi vrednost CloseQuery na False (prek parametra CanClose), prekine pa metodo Close.

OnClose
Če OnCloseQuery kaže, da je treba obrazec zapreti, se pokliče dogodek OnClose.

Dogodek OnClose nam daje še zadnjo priložnost, da preprečimo zapiranje obrazca. Obdelovalec dogodkov OnClose ima parameter Action, z naslednjimi štirimi možnimi vrednostmi:

  • caNone. Obrazca ni dovoljeno zapreti. Tako kot, če smo CanClose v OnCloseQuery postavili na False.
  • caHide. Namesto da zaprete obrazec, ga skrijete.
  • brezskrbno. Obrazec je zaprt, tako da dodeljeni pomnilnik osvobodi Delphi.
  • caMinimize. Obrazec je minimiziran, ne pa zaprt. To je privzeto dejanje za otroške obrazce MDI. Ko uporabnik izklopi Windows, se aktivira dogodek OnCloseQuery in ne OnClose. Če želite preprečiti, da bi se Windows zaustavil, vnesite kodo v obdelovalec dogodkov OnCloseQuery, seveda CanClose = False tega ne bo storil.

OnDestroy
Ko je metoda OnClose obdelana in obrazec zaprt, se pokliče dogodek OnDestroy. Ta dogodek uporabite za operacije, ki so nasprotne tistim v dogodku OnCreate. OnDestroy se uporablja za lociranje predmetov, povezanih z obliko in sprostitev ustreznega pomnilnika.

Ko se glavni obrazec za projekt zapre, prijava preneha.

instagram story viewer