Последовательность событий в форме, связанных с записями
Если просто просматриваются записи в форме, то при переходе к каждой новой записи выполняются событие
Текущая запись
(Current) для формы и все события, связанные с установкой фокуса в элементах формы. Если данные в записи меняются, то сохранение изменений происходит только при переходе к следующей записи или при закрытии формы (если нашли нужную запись, изменили и закрыли форму). Поскольку все изменения в записи происходят в элементах управления формы, одновременно будут возникать соответствующие события в элементах формы. Рас-смотрим типичную ситуацию, когда в форме выводится запись, в ней перемещаются по элементам управления до нужного элемента, изменяют в нем данные и переходят к следующей записи. В этом случае последовательность возникновения событий будет выглядеть так:
Текущая запись (ф) => {Вход (э) => Получение фокуса (э) => Выход (э) => Потеря
фокуса (э)} =>
Вход (э) => Получение фокуса (э) => До обновления (э) => После обновления (э) => До обновления (ф) => После обновления (ф)
=>
Выход (э) => Потеря фокуса (э) => RecordExit => Текущая запись (ф) => Вход (э) => Получение фокуса
(э)
В этой цепочке для упрощения опущены все события клавиатуры, а фигурные скобки выделяют цепочки событий, которые возникают при переходе между элементами управления формы. При изменении данных события
До обновления
(BeforeUpdate) и
После обновления
(AfterUpdate) происходят сначала для элемента, а затем для формы. Затем последний элемент (в данном случае тот, в котором происходили изменения) теряет фокус, происходит событие
RecordExit
(Выход из записи), выводится следующая запись, и фокус устанавливается на первый элемент в этой записи. События
До обновления
(BeforeUpdate) и
После обновления
(AfterUpdate) всегда возникают непосредственно перед переходом к следующей записи. После этого запись (элемент управления, в котором перед этим находился фокус) теряет фокус.
Замечание
Если запись сохраняется с помощью команды меню
Записи, Сохранить запись
(Records, Save Record), то последних событий
Выход
(Exit) и
Потеря фокуса
(LostFocus) не происходит. Это полезно знать, т. к. иногда требуется обойти эти события.
При удалении записи происходят события:
Удаление => До подтверждения Del
=>
После подтверждения Del => Текущая запись => Вход => Получение фокуса
Если событие
Удаление
(Delete) отменяется, то остальные события не возникают. После удаления записи фокус переходит на следующую запись, поэтому происходят события
Текущая запись
(Current) формы и
Вход
(Enter) и
Получение фокуса
(GetFocus) первого элемента в этой записи.
Добавление новой записи осуществляется после того, как пользователь вводит первый символ новой (пустой) записи. При этом события происходят в следующем порядке:
Текущая запись (ф) => Вход (э) => Получение фокуса (э) => До вставки (ф) => Изменение (э) => До обновления (ф) => После обновления (ф) => После вставки (ф)
В этой цепочке пропущены все события клавиатуры и
До обновления
(BeforeUpdate) и
После обновления
(AfterUpdate) для элементов формы, т. к. они описаны выше. Событие
Изменение
(Change) происходит, если первый символ новой записи вводится в текстовое поле.