Rođenje, život i smrt Delfi oblika

U Delphi, svaki projekt ima barem jedan prozor - glavni prozor programa. Svi prozori Delphi aplikacije temelje se TForm objekt.

Oblik

Oblici objekata osnovni su sastavni dijelovi Delphi aplikacije, stvarni prozori s kojima korisnik komunicira prilikom pokretanja aplikacije. Obrasci imaju svoja svojstva, događaje i metode pomoću kojih možete kontrolirati njihov izgled i ponašanje. Oblik je zapravo Delphi komponenta, ali za razliku od ostalih komponenti, oblik se ne pojavljuje na paleti komponenata.

Objekt obrasca obično stvaramo pokretanjem nove aplikacije (Datoteka | Nova aplikacija). Ovaj novostvoreni obrazac bit će, prema zadanim postavkama, glavni oblik aplikacije - prvi obrazac kreiran za vrijeme izvođenja.

Napomena: Za dodavanje dodatnog obrasca projektu Delphi odaberite File | Novi obrazac.

rođenja

onCreate
Događaj OnCreate pokreće se kada se prvi put stvori TForm, tj. Samo jednom. Izjava odgovorna za stvaranje obrasca nalazi se u izvoru projekta (ako je postavljen obrazac za automatski kreiranje projekta). Kada se oblikuje obrazac, a njegovo vidljivo svojstvo je True, sljedeći se događaji događaju navedenim redoslijedom: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Trebali biste upotrijebiti program za upravljanje događajima OnCreate da biste, primjerice, uradili poslove inicijalizacije poput dodjele popisa niza.

Svi objekti stvoreni u događaju OnCreate trebali bi se osloboditi događaja OnDestroy.

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

OnShow
Ovaj događaj ukazuje da se obrazac prikazuje. OnShow se zove neposredno prije nego što obrazac postane vidljiv. Pored glavnih obrazaca, ovaj se događaj događa kada postavimo obilježja forme Visible na True ili nazovemo metodu Show ili ShowModal.

OnActivate
Taj se događaj naziva kad program aktivira obrazac - to jest kada obrazac primi fokus na ulazu. Pomoću ovog događaja promijenite koja kontrola zapravo dobiva fokus ako nije željena.

OnPaint, OnResize
Događaji poput OnPaint i OnResize uvijek se pozivaju nakon što se obrazac prvotno stvori, ali se isto tako ponavljaju. OnPaint nastaje prije nego što se ikakve kontrole na obrascu oslikaju (koristite ga za posebno slikanje na obrascu).

Život

Rođenje forme nije toliko zanimljivo koliko mogu biti njegov život i smrt. Kada se stvori vaš obrazac i sve kontrole čekaju da se događaji obrade, program se pokreće dok netko ne pokuša zatvoriti obrazac!

Smrt

Aplikacija usmjerena na događaje prestaje se pokretati kada su svi obrasci zatvoreni i ne izvršava se nikakav kôd. Ako skriveni obrazac i dalje postoji kada je zatvoren posljednji vidljivi obrazac, čini se da vaša aplikacija ima završio (jer nije vidljiv nijedan obrazac), ali će se zapravo nastaviti prikazivati ​​sve dok svi skriveni obrasci ne budu zatvoreno. Pomislite na situaciju kada se glavni oblik rano sakrije, a svi ostali oblici se zatvore.

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

OnCloseQuery
Kada pokušavamo zatvoriti obrazac pomoću metode zatvaranja ili na drugi način (Alt + F4), poziva se događaj OnCloseQuery. Stoga je obrađivač događaja za ovaj događaj mjesto na kojem će presresti zatvaranje obrasca i spriječiti ga. Mi koristimo OnCloseQuery da pitamo korisnike jesu li sigurni da zaista žele da se obrazac zatvori.

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

početi

akoMessageDlg('Stvarno zatvorite ovaj prozor?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel zatim CanClose: = Netačno;

kraj; 

Priručnik događaja OnCloseQuery sadrži varijablu CanClose koja određuje je li oblik dopušteno zatvoriti. Rukovatelj događaja OnCloseQuery može postaviti vrijednost CloseQuery na False (preko parametra CanClose), poništavajući metodu Close.

OnClose
Ako OnCloseQuery ukaže da obrazac treba zatvoriti, poziva se događaj OnClose.

Događaj OnClose daje nam posljednju priliku da spriječimo zatvaranje obrasca. Rukovatelj događaja OnClose ima parametar Action sa sljedeće četiri moguće vrijednosti:

  • caNone. Obrazac se ne može zatvoriti. Baš kao da smo postavili CanClose na False u programu OnCloseQuery.
  • caHide. Umjesto da zatvorite obrazac, to sakrijete.
  • caFree. Obrazac je zatvoren, tako da mu je dodijeljena memorija oslobođena Delphi.
  • caMinimize. Obrazac je minimiziran, a ne zatvoren. Ovo je zadana radnja za MDI obrasce za dijete. Kad korisnik isključi Windows, aktivira se događaj OnCloseQuery, a ne OnClose. Ako želite spriječiti Windows da se isključi, stavite svoj kôd u program za obradu događaja OnCloseQuery, naravno CanClose = False to neće učiniti.

OnDestroy
Nakon obrade metode OnClose, a obrazac treba zatvoriti, poziva se događaj OnDestroy. Upotrijebite ovaj događaj za operacije suprotne onima u događaju OnCreate. OnDestroy se koristi za razmještanje objekata vezanih uz oblik i oslobađanje odgovarajuće memorije.

Kad se glavni obrazac za projekt zatvori, prijava se prekida.