DOSUG CZ– розовая кнопка на сайте!
Logo

Рождение, жизнь и смерть... формы
(Delphi)

   В Windows основной элемент пользовательского интерфейса - окно. В Delphi любой проект содержит хотя бы одно окно. Базой для окна в Delphi является объект TForm. В статье рассказывается о некоторых важных событиях, связанных с TForm.

1. Рождение формы.

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

OnCreate
Это событие происходит, когда форма создается командой CreateForm. Обычно вызовы этой функции содержатся в основном файле проекта (project source). Когда форма создана и ее свойство Visible установлено в True, события возникают в следующем порядке: OnShow, OnActivate, OnPaint. Использовать обработчик события OnCreate можно, например, для выделения памяти для динамических объектов. Любой объект, созданный в обработчике OnCreate должен быть удален в обработчике события OnDestroy.

OnShow
Это событие происходит, когда форма показывается пользователю, прямо перед отображением на экране (см. методы Show и ShowModal).

OnActivate
Обработчик этого события вызывается тогда, когда форма активизируется, т.е. форма получает фокус ввода (input focus). В обработчике OnActivate можно определить, какой из элементов ввода фактически получит фокус.

OnPaint, OnResize
Такие события, как OnPaint или OnResize происходят всякий раз перед тем, как какой-нибудь элемент формы перерисовывается. Их можно использовать для специальной прорисовки формы.

2. Жизнь формы.

А что можно сказать про жизнь формы? Жизнь продолжается, пока кто-нибудь не закроет форму...

3. Смерть формы.

Программа выполняется, пока есть хотя бы одно видимое окно. События закрытия формы происходят в следующем порядке:

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

OnCloseQuery
Когда мы пытаемся закрыть форму, используя метод Close или нажимая Alt-F4 вызывается обработчик события OnCloseQuery. Его основная задача - перехватить запрос на закрытие формы и при необходимости не допустить закрытия. Вот так, например, можно спросить пользователя, действительно ли нужно закрыть окно:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('Really close this window?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel   then
     CanClose := False;
end;

Как видно из примера, параметр CanClose определяет, действительно ли нужно закрыть форму. Устанавливая его в False, мы тем самым запрещаем закрытие формы.

OnClose
Обработчик события OnClose - последний шанс отменить закрытие формы. Параметр Action обработчика может принимать следующие значения:
- caNone - закрытие формы запрещено.
- caHide - вместо закрытия формы, мы прячем ее.
- caFree - форма закрывается и память, занимаемая ею, освобождается.
- caMinimize - форма не закрывается, а минимизируется. Это действие по умолчанию для форм MDI child.

OnDestroy
Событие происходит после события OnClose и обычно в обработчике этого события выполняются действия, обратные тем, что выполнялись в обработчике OnCreate.

главная - о проекте - контакты - реклама на сайте
 
LBN100 Elite

SoftStudio.Ru - студия разработки программ
LBN100 Elite