Одна дія, наприклад перехід від одного елемента керування об'єкта до іншого, може ініціювати кілька різних подій, які відбуваються в певній послідовності. Знати, коли та в якому порядку події відбуваються, важливо, оскільки від цих даних залежить, коли та як будуть запускатися макроси або процедури подій. Наприклад, якщо є дві процедури подій, які мають виконуватися в певному порядку, потрібно переконатися, що події, з якими вони пов’язані, відбуватимуться в такому ж порядку.
У цій статті
- Порядок подій для елементів керування у формах
- Порядок подій для записів у формах
- Порядок подій для форм і підформ
- Порядок подій для натискань клавіш і клацань мишкою
- Порядок подій для звітів і розділів звітів
Порядок подій для елементів керування у формах
Події відбуваються для елементів керування у формах, коли фокус переміщується до елемента керування, а також коли ви змінюєте та оновлюєте дані в елементі керування.
Примітка.
Програма Microsoft Office Access відображає імена подій дещо по-різному в редакторі Visual Basic у вікні властивостей і конструкторі макросів. Наприклад, подія, що має ім’я On Got Focus у вікні властивостей форми та конструкторі макросів, у редакторі Visual Basic називається GotFocus. У прикладах у цій статті для назв подій використовується формат Visual Basic for Applications (VBA).
Переміщення фокуса на елемент керування
Коли фокус переміщується на елемент керування у формі (наприклад, коли відкривається форма, яка містить один або кілька активних елементів керування, або фокус переміщується на інший елемент керування в тій же формі), події Enter та GotFocus відбудуться в такому порядку:
Enter
GotFocus
Коли відкривається форма, події Enter та GotFocus відбуваються після подій, пов’язаних із відкриттям форми (наприклад, Open, Activate і Current), у такому порядку:
Стрілка open (
форма) Activate (форма)
Current (форма)
Enter (елемент
GotFocus (елемент керування)
Коли фокус переміщується з елемента керування у формі (наприклад, коли закривається форма, яка містить один або кілька активних елементів керування, або фокус переміщується на інший елемент керування в тій же формі), події Exit і LostFocus відбудуться в такому порядку:
Стрілка виходу
LostFocus
Коли закривається форма, події Exit і LostFocus відбуваються перед подіями, пов’язаними із закриттям форми (наприклад, Unload, Deactivate і Close), у такому порядку:
Стрілка exit (елемента
LostFocus (елемент керування)
Unload (форма)
Deactivate (форма)
Close (форма)
Змінення й оновлення даних в елементі керування
Якщо ввести або змінити дані в елементі керування у формі, а потім перемістити фокус на інший елемент керування, відбудуться події BeforeUpdate і AfterUpdate:
BeforeUpdate
AfterUpdate
Події Exit і LostFocus для елемента керування, значення якого змінюється після подій BeforeUpdate і AfterUpdate:
BeforeUpdate
AfterUpdate
Exit
LostFocus
Коли текст у текстовому полі або в розділі текстового поля в полі зі списком змінюється, відбувається подія Change. Ця подія відбувається щоразу, коли змінюється вміст елемента керування, але до того, як фокус переміщується на інший елемент керування або запис (і, таким чином, до подій BeforeUpdate і AfterUpdate). Для кожної клавіші, яку натискають у текстовому полі або в розділі текстового поля в полі зі списком, відбувається така послідовність подій:
Стрілка внизклавіша -
Брудна стрілка
Змінитиклавішу
Подія NotInList відбувається після того, як у полі зі списком вводиться значення, якого немає в списку поля зі списком, і наступної спроби перемістити фокус на інший елемент керування або запис. Подія NotInList відбувається після подій клавіатури та події Change для поля зі списком, але до того, як настануть події для будь-якого іншого елемента керування або форми. Якщо властивість LimitToList поля зі списком має значення Так, подія Error для форми відбувається відразу після події NotInList :
Стрілка клавіші
"Стрілка вниз"
стрілка
Зміна
Клавіша Зі
NotInList
Порядок подій для записів у формах
Події відбуваються для записів у формах, коли фокус переміщується до іншого запису, оновлює дані в записі, видаляє наявний запис чи записи або створюється новий запис.
Переміщення фокуса на записи й оновлення даних у записах
Якщо фокус переміщено на наявний запис у формі, дані в записі введено або змінено, а фокус переміщено на інший запис, для форми відбувається така послідовність подій:
Стрілка Current (
форма) BeforeUpdate (форма)
AfterUpdate (форма)
(форма)
Якщо закрити запис, дані якого змінилися, але наступний запис ще не введено, відбуваються події Exit і LostFocus для елемента керування, на якому перебуває фокус. Ці події відбуваються після подій BeforeUpdate і AfterUpdate для цієї форми таким чином:
beforeUpdate (форма) AfterUpdate (форма)
Exit (елемент керування)
LostFocus (елемент керування)
(форма)
Коли фокус переміщується між елементами керування у формі, для кожного елемента керування відбуваються події. Наприклад, перелічені нижче послідовності подій виникають, коли виконуються такі дії:
- Відкриття форми й змінення даних в елементі керування:
Стрілка Current (
форма) Enter (елемент керування)
GotFocus (елемент керування)
BeforeUpdate (control)
AfterUpdate (елемент керування) - Переміщення фокуса на інший елемент керування:
Стрілка exit (елемент керування
LostFocus (елемент керування 1)
Enter (елемент керування
GotFocus (елемент керування2) - Переміщення фокуса на інший запис:
beforeUpdate (форма) AfterUpdate (форма)
Exit (елемент керування2)
LostFocus (елемент керування2)
Current (форма)
Видалення записів
Коли запис видалено, у Microsoft Office Access відображається діалогове вікно із запитом на підтвердження видалення, а для форми відбуваються такі події:
Delete
BeforeDelConfirm
AfterDelConfirm
Якщо скасувати подію Delete, події BeforeDelConfirm і AfterDelConfirm не відбуваються, і це діалогове вікно не відображається.
Створення нового запису
Якщо фокус переміщено на новий (пустий) запис у формі, а потім створено новий запис (введено дані в елементі керування), відбувається така послідовність подій:
Стрілка Current (форма)
Enter (елемент керування)
GotFocus (елемент керування)
BeforeInsert (форма)
AfterInsert (форма)
Подія BeforeInsert (форма) активує, щойно ви почнете вводити текст в елементі керування. Подія AfterInsert (форма) запускається після того, як ви залишите запис.
Події BeforeUpdate і AfterUpdate для елементів керування у формі та для нового запису відбуваються після події BeforeInsert і перед подією AfterInsert.
Порядок подій для форм і підформ
Події для форм відбуваються, коли відкривається або закривається форма, переміщується фокус між формами або обробляються дані у формі чи підформі.
Відкриття та закриття форми
Коли форма відкривається, для неї відбувається така послідовність подій:
Стрілка відкриття
завантаження
змінення розміру
Активація
Коли у формі немає активних елементів керування, для неї відбувається подія GotFocus після події Activate, але до події Current.
Коли форма закривається, для неї відбувається така послідовність подій:
Unload
Deactivate
Close
Якщо у формі немає активних елементів керування, подія LostFocus відбувається для форми після події Unload , але перед подією Deactivate .
Переміщення між формами
Під час переходу між двома відкритими формами для першої форми відбувається подія Deactivate, а для другої – подія Activate:
Deactivate (форма1)
Activate (форма2)
Подія Deactivate для форми також відбувається під час переходу з форми на іншу вкладку об’єкта в програмі Access. Проте подія Deactivate не відбувається, якщо перейти до діалогового вікна, форми, у якої властивість PopUp має значення Yes, або вікна в іншій програмі.
Примітка.
Подія Open не відбувається, якщо фокус переміщується до форми, яку вже відкрито, навіть якщо фокус переміщується до цієї форми за допомогою дії OpenForm.
Робота з даними у формі
Події для форм і елементів керування відбуваються, коли фокус переміщується між записами у формі або змінюються дані. Наприклад,коли форма відкривається вперше, відбувається така послідовність подій:
Стрілка відкриття (
Стрілка Завантаження (форма)
Змінити розмір (форма)
Activate (форма)
Current (
Enter (елемент керування)
GotFocus (елемент керування)
Так само, коли форма закривається, відбувається така послідовність подій для цієї форми:
Стрілка exit (елемента
LostFocus (елемент керування)
Unload (форма)
Deactivate (форма)
Close (форма)
Якщо дані в елементі керування змінено, для елемента керування та форми відбудуться події BeforeUpdate і AfterUpdate, які передують події Exit для елемента керування.
Робота з підформами
Коли відкривається форма, яка містить підформи, підформа та її записи завантажуються до завантаження головної форми. Таким чином, події для підформи та її елементів керування (такі як Open, Current, Enter та GotFocus) відбуваються раніше подій для форми. Проте для підформ подія Activate не відбувається. Таким чином, якщо відкрити головну форму, подія Activate активується лише для головної форми.
Аналогічно, коли закривається форма, яка містить підформи, підформи та записи вивантажуються після форми. Подія Activate для підформ не відбувається. Таким чином, коли закривається головна форма, подія Deactivate активується лише для головної форми. Події для елементів керування, форм і підформ відбуваються в такому порядку:
- події для елементів керування підформи (такі як Exit та LostFocus);
- події для елементів керування форм (включно з елементами керування підформ);
- події для форми (наприклад Deactivate і Close);
- події для підформи.
Примітка.
Оскільки події для підформи відбуваються, коли закрито головну форму, певні події, наприклад скасування закриття головної форми з події в підформі, не відбудуться. Можливо, знадобиться перемістити ці типи перевірок у подію в головній формі.
Порядок подій для натискань клавіш і клацань мишкою
Події клавіатури відбуваються для форм і елементів керування, коли ви натискаєте клавіші або надсилаєте натискання клавіш, коли форма або елемент керування має фокус. Події миші для форм, розділів форм і елементів керування у формах відбуваються після натискання кнопки миші коли вказівник миші знаходиться у формі, розділі або на елементі керування. Події миші відбуваються, коли вказівник миші наводиться на форму, розділ або елемент керування.
Події клавіатури
Коли ви натискаєте та випускаєте клавішу, коли фокус перебуває на елементі керування у формі (або для надсилання натискання клавіш використовуйте дію або інструкцію SendKeys ), відбувається така послідовність подій:
Клавіша
вниз Клавіша зі стрілкоюUp
Коли ви натискаєте та випускаєте клавішу або надсилаєте натискання клавіш у наборі символів ANSI, відбуваються події KeyDown, KeyPress і KeyUp . Якщо ви натискаєте і утримуйте клавішу ANSI, keyDown і KeyPress події чергуються кілька разів (KeyDown, KeyPress, KeyDown, KeyPress, і так далі), поки ви не відпустите клавішу; тоді відбувається подія KeyUp .
Якщо натиснути та відпустити клавішу не у форматі ANSI, відбудуться події KeyDown і KeyUp. Якщо натиснути й утримувати клавішу не у форматі ANSI, подія KeyDown відбувається кілька разів, доки клавішу відпустять, після чого відбувається подія KeyUp.
Якщо натискання клавіші активує іншу подію для елемента керування, така подія відбувається після події KeyPress, але раніше ніж подія KeyUp. Наприклад, якщо натискання клавіш призводить до зміни тексту в текстовому полі, що активує подію Change, відбувається така послідовність подій:
Клавіша
вниз Клавіша
Змінитиклавішу Зі стрілкоюUp
Якщо натискання клавіші спричиняє переміщення фокуса з одного елемента керування на інший, подія KeyDown відбувається для першого елемента керування, у той час як для другого елемента керування відбуваються події KeyPress і KeyUp. Наприклад, якщо дані в елементі керування змінюються, а потім натискається клавіша табуляції, щоб перейти до наступного елемента керування, відбувається зазначена нижче послідовність подій:
- Перший елемент керування:
Стрілка "До
оновлення"
"Після оновлення
виходуLostFocus - Другий елемент керування:
Enter
GotFocus
KeyPress
KeyUp
Події миші
Якщо натиснути та відпустити кнопку миші, коли вказівник наведено на елемент керування у формі, для цього елемента керування відбудеться наведена нижче послідовність подій:
MouseDown
MouseUp
Click
Якщо клацнути елемент керування, коли фокус розташовано на іншому елементі, щоб перемістити фокус на цей інший елемент керування, відбувається така послідовність подій:
- Перший елемент керування:
Стрілка виходу
LostFocus - Другий елемент керування:
Enter
GotFocus
MouseDown
MouseUp
Якщо перейти на інший запис, а потім клацнути елемент керування, для форми також відбудеться подія Current перед настанням події Enter для елемента керування.
Подвійне клацання елемента керування активує настання подій Click і DblClick. Наприклад, якщо двічі клацнути елемент керування, окрім кнопки, для елемента керування відбудеться така послідовність подій:
MouseDown
MouseUp
Click
DblClick
MouseUp
Якщо двічі клацнути кнопку, відбудеться наведена вище послідовність подій, після чого настане подія Click.
Подія MouseMove відбувається для форми, розділу або елемента керування, якщо вказівник миші наведено на форму, розділ або елемент керування. Ця подія не залежить від інших подій миші.
Порядок подій для звітів і розділів звітів
Події для звітів і розділів звітів відбуваються, коли звіт закривається або відкривається для друку чи попереднього перегляду.
Події для звітів
Якщо відкрити звіт для друку або попереднього перегляду, а потім закрити його чи перейти на іншу вкладку об’єкта в програмі Access, відбудеться така послідовність подій:
Відкрита
Завантаження
Активація
Закрити
Вимкнути
Якщо перейти від одного відкритого звіту до іншого, для першого звіту відбувається подія Deactivate, а для другого – подія Activate:
Deactivate (report1)
Activate (звіт2)
Подія Deactivate для звіту також відбувається, якщо перейти зі звіту на іншу вкладку об’єкта в програмі Access. Проте подія Deactivate не відбувається, якщо перейти до діалогового вікна, форми, у якої властивість PopUp має значення Yes, або вікна в іншій програмі.
Якщо відкрити звіт на основі запиту, перш ніж виконати цей запит, програма Access запускає для звіту подію Open. Зрештою, можна встановити умови для звіту за допомогою макросу або процедури події, які відповідають події Open. Наприклад, макрос або процедура події можуть відкрити спеціальне діалогове вікно, у якому потрібно ввести умову для звіту.
Події для розділів звітів
Під час друку або попереднього перегляду звіту відбуваються події Format і Print для розділів звітів після подій Open і Activate для звіту та перед подіями Close або Deactivate для цього звіту:
Стрілка відкриття (
Стрілка завантаження (звіт)
Активувати (звіт)
Формат (розділ
Друк (розділ звіту)
Закрити (звіт)
Вимкнути (звіт)
Безпеки За допомогою подання звіту можна ввімкнути фільтрування користувачами звітів. Але на відміну від попереднього перегляду, події Формат і Друк у будь-якому розділі не відбуваються в поданні звіту. Це також стосується результатів функцій VBA і користувацьких процедур, які відображаються в елементах керування (наприклад, підписах етикеток, стан відображення, умовне форматування, змінення розміру елементів керування тощо) у цих подіях. Таким чином, не використовуйте код у цій події, щоб форматувати, приховувати або друкувати конфіденційні дані, які можуть стати доступні. Радимо попередньо відфільтрувати дані або вимкнути попередній перегляд звіту, установивши для властивості AllowReportView значення Ні.
Крім того, під час або після форматування, але перед подією Print можуть відбутися такі події:
- Подія Retreat відбувається, коли програма Access повертається до попереднього розділу під час форматування звіту.
- Подія NoData відбувається, якщо записи у звіті не відображаються.
- Подія Page відбувається після форматування, але перед друком. Цю подію можна використовувати, щоб настроїти зовнішній вигляд друкованого звіту.