Последовательность событий в формах


При открытии формы происходит следующая цепочка событий: Открытие => Загрузка => Изменение размера => Включение => Текущая запись => Вход => Получение фокуса
События Вход (Enter) и Получение фокуса (GetFocus) возникают для первого элемента в первой записи. Если форма не имеет видимых или доступных элементов управления, то последовательность событий несколько иная: Открытие => Загрузка => Изменение размера => Включение => Получение фокуса => Текущая запись
В этом случае событие Получение фокуса (GetFocus) относится к форме. При закрытии формы последовательность событий следующая: Выход => Потеря фокуса => Выгрузка => Отключение => Закрытие
То есть сначала теряет фокус последний элемент в форме, а затем выполняются события для формы. Если в форме не было видимых или доступных элементов, то последовательность другая: Выгрузка => Потеря фокуса (ф) => Отключение => Закрытие
При переключении между двумя открытыми формами последовательность событий следующая: Потеря фокуса (э1) => Отключение (ф!) => Включение (ф2) => Вход (э2) => Получение фокуса (э2)
Если из открытой формы открывают другую форму, то сначала в открываемой форме происходят события Открытие (Open), Загрузка (Load) и Изменение размера (Resize), и только после этого в первой форме произойдет событие Отключение (Deactivate): Открытие (ф2) => Загрузка (ф2) => Изменение размера (ф2) => Отключение (ф1) => Включение (ф2) => Текущая запись (ф2)
Это дает возможность проконтролировать открытие второй формы. Кроме того, событие Включение (Activate) происходит каждый раз, когда форма получает фокус, а события Открытие (Open) и Загрузка (Load) не происходят, если форма уже открыта, даже если переход в эту форму выполняется с помощью макрокоманды ОткрытьФорму (OpenForm). Событие Отключение (Deactivate) для формы не происходит, если фокус переносится в диалоговое окно.
Если открываемая форма содержит подчиненные формы, то сначала загружаются подчиненные формы и осуществляются все события в них, которые обычно происходят при открытии формы, кроме события Включение (Activate) — оно не возникает. Затем загружается главная форма в обычном порядке и для нее выполняется событие Включение (Activate).
Аналогично при закрытии такой формы сначала выгружаются все подчиненные формы, но в них не возникает событие Отключение (Deactivate). События при этом происходят в следующем порядке:

  1. События для элементов подчиненной формы, например Выход (Exit) и Потеря фокуса (LostFocus).
  2. События элементов управления в главной форме, в том числе для того элемента, который содержит подчиненную форму.
  3. События для главной формы.
  4. События для подчиненной формы.

Последовательность событий клавиатуры и мыши
При нажатии и отпускании любой клавиши на клавиатуре в том случае, если фокус находится в одном из элементов управления формы, возникает следующая цепочка событий: Клавиша вниз => Нажатие клавиши => Клавиша вверх
При щелчке мышью на элементе управления формы, соответственно: Кнопка вниз => Кнопка вверх => Нажатие кнопки
Об особенностях этих событий подробно говорилось выше при их описании, поэтому сейчас мы позволим себе не повторяться.
Последовательность событий в отчетах
В отчетах события возникают только для самого отчета и его разделов. Для полей отчета события отсутствуют. При выводе отчета на печать события обычно возникают в следующей последовательности: Открытие => Включение => {Формат => Печать} => Закрытие => Отключение
События Форматирование (Format) и Печать (Print) относятся к разделам отчета и возникают при обработке каждого раздела. Дополнительными событиями могут быть события:

  1. Отсутствие данных (NoData), которое возникает перед первым событием Печать (Print), если источник записей не содержит записей.
  2. Страница (Page), которое возникает после всех событий Печать (Print) для страницы отчета.

Событие Возврат (Retreat) возникает в процессе форматировании страницы отчета, когда требуется вернуться к предыдущему разделу, перед событиями Печать (Print) для страницы.