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