Рождение, Жизнь и Смерть Дельфийской Формы

В Delphiкаждый проект имеет хотя бы одно окно - главное окно программы. Все окна приложения Delphi основаны на Объект TForm.

форма

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

Обычно мы создаем объект формы, запуская новое приложение (File | New Application). Эта вновь созданная форма будет по умолчанию основной формой приложения - первой формой, созданной во время выполнения.

Примечание. Чтобы добавить дополнительную форму в проект Delphi, выберите «Файл | Новая форма.

рождения

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
Когда мы пытаемся закрыть форму, используя метод Close или другим способом (Alt + F4), вызывается событие OnCloseQuery. Таким образом, обработчик события для этого события - это место для перехвата закрытия формы и предотвращения его. Мы используем OnCloseQuery, чтобы спросить пользователей, уверены ли они, что действительно хотят, чтобы форма закрылась.

процедура TForm1.FormCloseQuery (Отправитель: TObject; вар CanClose: Boolean);

начать

еслиMessageDlg(«Действительно закрыть это окно?», MtConfirmation, [mbOk, mbCancel], 0) = mrCancel тогда CanClose: = False;

конец; 

Обработчик события 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 используется для освобождения объектов, связанных с формой и освобождения соответствующей памяти.

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