Delfu formas dzimšana, dzīve un nāve

Iekšā Delfi, katram projektam ir vismaz viens logs - programmas galvenais logs. Visi Delphi lietojumprogrammas logi ir balstīti uz TForm objekts.

Forma

Veidojiet objektus ir Delphi lietojumprogrammas pamata veidojošie elementi, faktiskie logi, ar kuriem lietotājs mijiedarbojas, palaižot lietojumprogrammu. Veidlapām ir savas īpašības, notikumi un metodes, ar kuru palīdzību jūs varat kontrolēt to izskatu un uzvedību. Veidlapa faktiski ir Delphi komponents, taču atšķirībā no citiem komponentiem forma neparādās komponentu paletē.

Parasti mēs veidojam formas objektu, palaižot jaunu lietojumprogrammu (File | New Application). Šī jaunizveidotā forma pēc noklusējuma būs lietojumprogrammas galvenā forma - pirmā veidlapa, kas izveidota izpildlaikā.

Piezīme: Lai Delphi projektam pievienotu papildu veidlapu, atlasiet File | Jauna forma.

Dzimšana

OnCreate
OnCreate notikums tiek atlaists, kad pirmo reizi tiek izveidota TForm, tas ir, tikai vienreiz. Paziņojums, kas atbild par veidlapas izveidi, ir projekta avotā (ja veidlapa ir iestatīta automātiski, lai projekts to izveidotu). Kad veidlapa tiek veidota un tās redzamajam īpašumam ir taisnība, šādi notikumi notiek norādītajā secībā: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Lai, piemēram, inicializētu darbus, piemēram, piešķirtu virkņu sarakstus, jums vajadzētu izmantot OnCreate notikumu apstrādātāju.

Visi objekti, kas izveidoti OnCreate notikumā, ir jāatbrīvo no OnDestroy notikuma.

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

OnShow
Šis notikums norāda, ka forma tiek parādīta. OnShow tiek izsaukts tieši pirms forma kļūst redzama. Papildus galvenajām formām, šis notikums notiek, kad mēs iestatām formas Visible rekvizītu True, vai izsaucam metodi Show vai ShowModal.

Ieslēgt
Šis notikums tiek izsaukts, kad programma aktivizē formu - tas ir, kad forma saņem ievades fokusu. Izmantojiet šo notikumu, lai mainītu, kurai vadībai faktiski tiek pievērsta uzmanība, ja tā nav vēlamā.

OnPaint, OnResize
Notikumi, piemēram, OnPaint un OnResize, vienmēr tiek izsaukti pēc veidlapas sākotnējās izveidošanas, bet tiek izsaukti arī atkārtoti. OnPaint notiek pirms jebkuras veidlapas nokrāsošanas (izmantojiet to īpašai veidlapas krāsošanai).

Dzīve

Formas dzimšana nav tik interesanta, cik tā var būt dzīvība un nāve. Kad veidlapa ir izveidota un visas vadīklas gaida notikumu apstrādi, programma darbojas, līdz kāds mēģina aizvērt veidlapu!

Nāve

Notikumu virzīta lietojumprogramma pārstāj darboties, kad visas tās formas ir aizvērtas un neviens kods netiek izpildīts. Ja slēpta forma joprojām pastāv, kad pēdējā redzamā forma ir aizvērta, jūsu lietojumprogramma, šķiet, ir beidzās (jo neviena forma nav redzama), bet faktiski turpinās darboties, līdz būs visas slēptās formas slēgts. Iedomājieties tikai situāciju, kad galvenā forma agri tiek paslēpta un visas pārējās formas ir slēgtas.

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

Vietnē OnCloseQuery
Mēģinot aizvērt formu, izmantojot aizvēršanas metodi vai izmantojot citus līdzekļus (Alt + F4), tiek izsaukts OnCloseQuery notikums. Tādējādi notikuma apstrādātājs šim notikumam ir vieta, kur pārtvert formas aizvēršanu un novērst to. Mēs izmantojam OnCloseQuery, lai lietotājiem vaicātu, vai viņi ir pārliecināti, ka viņi patiešām vēlas, lai veidlapa tiktu aizvērta.

procedūra TForm1.FormCloseQuery (Sūtītājs: TObject; var CanClose: Būla);

sākt

jaMessageDlg('Vai tiešām aizvērt šo logu?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel tad CanClose: = Nepatiess;

beigas; 

OnCloseQuery notikumu apstrādātājs satur mainīgo CanClose, kas nosaka, vai ir atļauts aizvērt veidlapu. OnCloseQuery notikumu apstrādātājs var iestatīt CloseQuery vērtību uz False (izmantojot parametru CanClose), pārtraucot aizvēršanas metodi.

OnClose
Ja OnCloseQuery norāda, ka veidlapa ir jāaizver, tiek izsaukts OnClose notikums.

OnClose pasākums dod mums vēl vienu pēdējo iespēju novērst formas aizvēršanu. OnClose notikumu apstrādātājam ir darbības parametrs ar četrām iespējamām vērtībām:

  • caNone. Veidlapu nav atļauts aizvērt. Tieši tā, it kā OnCloseQuery CanClose iestatītu uz False.
  • caHide. Tā vietā, lai aizvērtu veidlapu, jūs to slēpjat.
  • bez maksas. Veidlapa ir aizvērta, tāpēc tai atvēlēto atmiņu atbrīvo Delfi.
  • caMinimize. Forma ir samazināta līdz minimumam, nevis slēgta. Šī ir noklusējuma darbība MDI bērnu formām. Kad lietotājs izslēdz Windows, tiek aktivizēts OnCloseQuery notikums, nevis OnClose. Ja vēlaties novērst Windows izslēgšanu, ievietojiet kodu OnCloseQuery notikumu apstrādātājā, protams, CanClose = False to nedarīs.

OnDestroy
Pēc OnClose metodes apstrādes un formas aizvēršanas tiek izsaukts OnDestroy notikums. Izmantojiet šo notikumu darbībām, kas ir pretējas OnCreate pasākuma darbībām. OnDestroy tiek izmantots objektu izvietošanai, kas saistīti ar formu, un atbilstošās atmiņas atbrīvošanai.

Kad galvenā projekta forma tiek aizvērta, pieteikums tiek izbeigts.

instagram story viewer