Формата за раждане, живот и смърт на Делфи

click fraud protection

в Delphi, всеки проект има поне един прозорец - основният прозорец на програмата. Всички прозорци на приложение на Delphi са базирани на Обект TForm.

форма

Формирайте обекти са основните градивни елементи на приложението Delphi, действителните прозорци, с които потребителят взаимодейства, когато стартира приложението. Формите имат свои собствени свойства, събития и методи, с които можете да контролирате външния им вид и поведение. Формата всъщност е компонент на Delphi, но за разлика от други компоненти, форма не се появява в палитрата на компонентите.

Обикновено създаваме обект на форма, като стартираме ново приложение (Файл | Ново приложение). Този новосъздаден формуляр ще бъде по подразбиране основната форма на приложението - първата форма, създадена по време на изпълнение.

Забележка: За да добавите допълнителен формуляр към проекта Delphi, изберете File | Нова форма.

раждане

OnCreate
Събитието OnCreate се стартира, когато за първи път се създаде TForm, тоест само веднъж. Изявлението, отговорно за създаването на формуляра, е в източника на проекта (ако формулярът е зададен да бъде автоматично създаден от проекта). Когато се създава форма и нейното свойство Visible е True, следните събития се случват в посочения ред: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Трябва да използвате манипулатора на събитията OnCreate, за да направите например задачи за инициализация като разпределяне на списъци с низове.

Всички обекти, създадени в събитието OnCreate, трябва да бъдат освободени от събитието OnDestroy.

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

OnShow
Това събитие показва, че формулярът се показва. OnShow се извиква точно преди да стане видима форма. Освен основните форми, това събитие се случва, когато зададем свойства Visible на True, или се обадим на метода Show или ShowModal.

OnActivate
Това събитие се извиква, когато програмата активира формата - тоест когато формулярът получи фокус за въвеждане. Използвайте това събитие, за да промените кой контрол всъщност се фокусира, ако не е желаният.

OnPaint, OnResize
Събития като OnPaint и OnResize винаги се извикват след първоначалното създаване на формата, но също така се извикват многократно. OnPaint се появява преди всякакви контроли върху формуляра да бъдат боядисани (използвайте го за специално рисуване върху формата).

живот

Раждането на форма не е толкова интересно, колкото може да бъде нейният живот и смърт. Когато вашата форма е създадена и всички контроли чакат събитията да се справят, програмата работи, докато някой не се опита да затвори формата!

смърт

Приложение, управлявано от събития, спира да се изпълнява, когато всички негови форми са затворени и не се изпълнява код. Ако скрит формуляр все още съществува, когато последната видима форма е затворена, изглежда, че приложението ви има приключи (защото не се виждат форми), но всъщност ще продължи да се изпълнява, докато всички скрити форми са затворен. Само помислете за ситуация, при която основната форма се скрива рано, а всички останали форми са затворени.

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

OnCloseQuery
Когато се опитаме да затворим формата чрез метода затваряне или по друг начин (Alt + F4), се извиква събитието OnCloseQuery. По този начин, обработващият събитията за това събитие е мястото да пресече затварянето на формуляра и да го предотврати. Ние използваме OnCloseQuery, за да попитаме потребителите дали са сигурни, че наистина искат формата да се затвори.

процедура TForm1.FormCloseQuery (Подател: TObject; Var CanClose: Boolean);

започвам

акоMessageDlg('Наистина ли затваряте този прозорец?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel тогава CanClose: = Грешно;

край; 

Обработващият събитие OnCloseQuery съдържа променлива CanClose, която определя дали форма е позволено да се затвори. Обработващият събитията OnCloseQuery може да зададе стойността на CloseQuery на False (чрез параметъра CanClose), прекъсвайки метода на Close.

OnClose
Ако OnCloseQuery посочи, че формулярът трябва да бъде затворен, се извиква събитието OnClose.

Събитието OnClose ни дава последен шанс да предотвратим затварянето на формуляра. Обработващият събитията OnClose има параметър Action със следните четири възможни стойности:

  • Canone. Формата не се затваря. Точно така, сякаш сме задали CanClose на False в OnCloseQuery.
  • caHide. Вместо да затворите формуляра, вие го скриете.
  • caFree. Формата е затворена, така че разпределената памет се освобождава от Delphi.
  • caMinimize. Формата е сведена до минимум, а не затворена. Това е действието по подразбиране за MDI формуляри за деца. Когато потребителят изключва Windows, се активира събитието OnCloseQuery, а не OnClose. Ако искате да попречите на Windows да се изключи, поставете кода си в манипулатора на събитията OnCloseQuery, разбира се CanClose = False няма да направи това.

OnDestroy
След като методът OnClose бъде обработен и формата трябва да бъде затворена, се извиква събитието OnDestroy. Използвайте това събитие за операции, противоположни на тези в събитието OnCreate. OnDestroy се използва за разместване на обекти, свързани с формата и освобождаване на съответната памет.

Когато основният формуляр за даден проект се затвори, заявлението се прекратява.

instagram story viewer