Последовательности событий Access
Последовательность событий в формах
При открытии формы происходит следующая цепочка событий: Открытие › Загрузка › Изменение размера › Включение › Текущая запись Вход › Получение фокуса.
События Вход (Enter) и Получение фокуса (GetFocus) возникают для первого элемента в первой записи. Если форма не имеет видимых или доступных элементов управления, то последовательность событий несколько иная: Открытие › Загрузка › Изменение размера › Включение › Получение фокуса › Текущая запись.
В этом случае событие Получение фокуса (GetFocus) относится к форме. При закрытии формы последовательность событий следующая: Выход › Потеря фокуса › Выгрузка › Отключение › Закрытие.
То есть сначала теряет фокус последний элемент в форме, а затем выполняются события для формы. Если в форме не было видимых или доступных элементов, то последовательность другая: Выгрузка › Потеря фокуса (ф) › Отключение › Закрытие.
При переключении между двумя открытыми формами последовательность событий следующая: Потеря фокуса (э1) › Отключение (ф1) › Включение (ф2) › Вход (э2) › Получение фокуса (э2).
Если из открытой формы открывают другую форму, то сначала в открываемой форме происходят события Открытие (Open), Загрузка (Load) и Изменение размера (Resize), и только после этого в первой форме произойдет событие Отключение (Deactivate): Открытие (ф2) › Загрузка (ф2) › Изменение размера (ф2) › Отключение (ф1) › Включение (ф2) › Текущая запись (ф2).
Это дает возможность проконтролировать открытие второй формы. Кроме того, событие Включение (Activate) происходит каждый раз, когда форма получает фокус, а события Открытие (Open) и Загрузка (Load) не происходят, если форма уже открыта, даже если переход в эту форму выполняется с помощью макрокоманды ОткрытьФорму (OpenForm). Событие Отключение (Deactivate) для формы не происходит, если фокус переносится в диалоговое окно.
Если открываемая форма содержит подчиненные формы, то сначала загружаются подчиненные формы и осуществляются все события в них, которые обычно происходят при открытии формы, кроме события Включение (Activate) – оно не возникает. Затем загружается главная форма в обычном порядке и для нее выполняется событие Включение (Activate).
Аналогично при закрытии такой формы сначала выгружаются все подчиненные формы, но в них не возникает событие Отключение (Deactivate). События при этом происходят в следующем порядке:
- События для элементов подчиненной формы, например Выход (Exit) и Потеря фокуса (LostFocus).
- События элементов управления в главной форме, в том числе для того элемента, который содержит подчиненную форму.
- События для главной формы.
- События для подчиненной формы.
Последовательность событий клавиатуры и мыши
При нажатии и отпускании любой клавиши на клавиатуре в том случае, если фокус находится в одном из элементов управления формы, возникает следующая цепочка событий: Клавиша вниз › Нажатие клавиши › Клавиша вверх.
При щелчке мышью на элементе управления формы, соответственно: Кнопка вниз › Кнопка вверх › Нажатие кнопки.
Об особенностях этих событий подробно говорилось выше при их описании, поэтому сейчас мы позволим себе не повторяться.
Последовательность событий в отчетах
В отчетах события возникают только для самого отчета и его разделов. Для полей отчета события отсутствуют. При выводе отчета на печать события обычно возникают в следующей последовательности: Открытие › Включение › {Формат › Печать} › Закрытие › Отключение.
События Форматирование (Format) и Печать (Print) относятся к разделам отчета и возникают при обработке каждого раздела. Дополнительными событиями могут быть события:
- Отсутствие данных (NoData), которое возникает перед первым событием Печать (Print), если источник записей не содержит записей.
- Страница (Page), которое возникает после всех событий Печать (Print) для страницы отчета.
- Событие Возврат (Retreat) возникает в процессе форматировании страницы отчета, когда требуется вернуться к предыдущему разделу, перед событиями Печать (Print) для страницы.