Використання макросів для обробки подій

Використання макросів для обробки подій

Найбільш часто макроси застосовуються для обробки подій. При цьому макрос може функціонувати і як самостійна програма, і в складі процедури VBA (Visual Basic for Applications). Перший варіант ми розглянемо в цьому розділі, а другий стане предметом нашої уваги в главі 12.

Подія - це будь-яка дія користувача: клацання кнопкою миші, відкриття форми і т. Д. Подія може також ініціюватися будь-яким оператором Visual Basic або самою системою Access. Події зв'язуються з формами, звітами, розділами форм і звітів, а також з елементами управління форм, зокрема з полями. Відгуком на подію може бути виконання процедури обробки подій на мові VBA або макросу.

Що таке обробка події? Наприклад, давайте подивимося, як виглядають властивості поля форми (нехай це буде форма Країни). Відкриємо її в режимі конструктора (див. Рис. 10.1).

Треба відкрити також список подій, передбачених для будь-якого поля даної форми (наприклад, для поля Код). Для цього слід або двічі клацнути лівою кнопкою миші в межах цього поля, або клацнути там же правою кнопкою миші і в контекстному меню вибрати опцію Властивості. Коли на екрані виникне однойменне вікно, відкрийте в ньому вкладку Подія. В результаті буде виведений шуканий список можливих подій (див. Рис. 10.2).

Подія виникає для цього поля в наступних випадках:

• при оновленні поля (до або після операції);

• при відкритті / закритті поля;

• при активізації / дезактівізация поля, коли воно отримує або втрачає фокус;

• при використанні кнопок миші (клацання, подвійне клацання, рух курсора вгору або вниз);

• при використанні клавіатурних клавіш (натискання клавіші, рух курсора вгору або вниз);

• при переміщенні курсора.

Розробник, який вбудовує в систему певні реакції програми на дії користувача, повинен враховувати наступне. Кожна окрема операція (припустимо, перехід від одного елемента управління до іншого) може спричинити за собою ряд подій, що виникають в певній послідовності. Дуже важливо знати її, оскільки від порядку подій залежать умови і черговість виконання макросів і процедур обробки подій. Припустимо, створені дві такі процедури, і вони повинні виконуватися в певній послідовності. Значить, користувач повинен бути впевнений, що події, що викликають ці процедури, виникають в тому ж порядку.

Порядок подій для елементів управління у формах Події елемента управління виникають в формі при перекладі фокуса на елемент управління, а також у разі зміни або оновлення даних в цьому елементі.

Переклад фокусу на елемент управління

Так, при переході фокусу в форму, в якій виводиться один або кілька активних елементів управління, або при переході до іншого елементу управління в цій же формі виникають події в наступному порядку:

Вхід • Отримання фокусу.

Названі події виникають також після того, як користувач відкриє форму, тобто після операцій Відкриття, Поточний запис. Послідовність в даному випадку така:

Відкриття (для форми) • Включення (для форми) • Поточна запис (для форми) Вхід (для елемента управління) • Отримання фокусу (для елемента управління).

Тепер розглянемо іншу ситуацію: елемент управління втрачає фокус. Наприклад, форма, в якій активізуються один або кілька елементів управління, закривається або користувач переходить до іншого елементу управління в тій же формі. В такому випадку виникають події:

Вихід • не сфокусоване.

Коли користувач закриває форму, події Вихід і не сфокусоване виникають перед операціями, пов'язаними з цим закриттям: Вивантаження, Відключення, Закриття. Порядок буде таким:

Вихід (для елемента управління) • Зображення не сфокусоване (для елемента управління) • Вивантаження (для форми) • Відключення (для форми) • Закриття (для форми).

Зміна і оновлення даних в елементі управління

Припустимо, користувач включає в елемент управління форми нові дані або змінює існуючі, а потім переводить фокус на інший елемент керування. Тоді виникають події До оновлення та Після поновлення, що відбуваються в наступному порядку:

До поновлення • Після оновлення.

Події Вихід і не сфокусоване для змінюваного елемента управління виникають після подій До оновлення та Після поновлення:

До поновлення • Після поновлення • Вихід • не сфокусоване.

Якщо користувач модифікує текст, який знаходиться в полі, або змінює вміст поля зі списком, то виникає подія Зміна. Відзначимо, що воно відбувається при будь-якій зміні вмісту елемента управління, причому до переходу до іншого елемента керування або до іншого запису (отже, до виникнення подій До оновлення та Після поновлення). Якщо курсор знаходиться в полі, то клацання по будь клавіші, відповідної символу, викликає такі події:

Клавіша вниз • Натиснути клавішу • Зміна • клавіша вгору.

Подія Відсутність в списку виникає, коли користувач вводить в поле зі списком значення, відсутнє в цьому списку, а потім намагається перейти до іншого елемента керування або до іншого запису. Подія Відсутність в списку відбувається також після подій клавіатури і події Зміна для поля зі списком, але до виникнення будь-яких подій в елементі управління або форми. Якщо для властивості поля зі списком Ограничиться списком задано значення Так, то відразу після події Відсутність в списку виникає подія форми Помилка:

Клавіша вниз • Натиснути клавішу • Зміна • клавіша вгору.

Порядок подій записи в формі

Події записи виникають в формі в наступних випадках:

• при перекладі фокуса на запис;

• при оновленні вмісту записи;

• при видаленні існуючої записи / записів;

• при створенні нового запису.

Переміщення фокуса по записах і оновлення вмісту записів

При перекладі фокуса на запис, існуючу в формі, при введенні нових або зміну існуючих даних в запису, а також при переході до іншого запису тієї ж форми виникає така послідовність подій:

Поточний запис • До поновлення • Після поновлення • Поточна запис.

При виході з зміненої записи, але до входу в новий запис виникають події Вихід і не сфокусоване. Вони відбуваються для того останнього елемента управління, на якому знаходився фокус. Ці події виникають після подій форми До оновлення та Після поновлення:

До поновлення (для форми) • Після оновлення (для форми) • Вихід (для елемента управління) • Зображення не сфокусоване (для елемента управління) • Поточна запис (для форми).

При перекладі фокуса з одного елемента управління на інший виникають події для кожного з цих елементів. Наприклад, можливі такі послідовності подій:

• відкриття форми і зміна даних в елементі управління:

Поточний запис (для форми) • Вхід (для елемента управління) • Отримання фокусу (для елемента управління) • До оновлення (для елемента управління) • Після оновлення (для елемента управління);

• переклад фокуса на інший елемент керування:

Вхід (для елемента управління) • Зображення не сфокусоване (для елемента управління 1) • Вхід (для елемента управління 2) • Отримання фокусу (для елемента управління 2);

• переклад фокуса на інший запис:

До поновлення (для форми) • Після оновлення (для форми) • Вихід (для елемента управління 2) • Зображення не сфокусоване (для елемента управління 2) • Поточна запис (для форми).

Коли користувач видаляє запис, в формі виникають такі події:

Видалення • До підтвердження видалення • Після підтвердження видалення.

Перед цим Microsoft Access обов'язково виводить діалогове вікно, пропонуючи підтвердити видалення. Якщо користувач скасовує подія Видалення, то події До підтвердження видалення і після підтвердження видалення не виникають і діалогове вікно не виводиться.

Створення нового запису

Якщо користувач переводить фокус на нову (порожню) запис у формі або створює новий запис, вводячи символи з клавіатури, то події виникають в наступному порядку:

Поточний запис (для форми) • Вхід (для елемента управління) • Отримання фокусу (для елемента управління) • До вставки (для форми) • Після вставки (для форми).

Відзначимо, що події До оновлення та Після поновлення для елементів управління у формі і для нового запису виникають після події До вставки, але до події Після вставки.

Порядок подій клавіатури і миші

Події клавіатури виникають в мають фокус формах або в елементах управління форми при натисканні клавіш або при передачі команд клавіатури.

Події миші виникають для форм, розділів форм і елементів управління в формах при натисканні на кнопку миші, якщо в цей момент її покажчик встановлений на формі, розділі форми або елементі управління.

Якщо фокус знаходиться на елементі управління форми, а користувач натискає і відпускає клавішу або виконує макрокоманду Команди клавіатури, що імітує натискання клавіші, виникає наступний ланцюжок подій:

Клавіша вниз • Натиснути клавішу • клавіша вгору.

При натисканні або відпуску клавіші, а також при виконанні клавіатурній команди, що відповідає символу з набору ANSI, завжди виникають події Кнопка вниз, Натиснути кнопку і Кнопка вгору. Якщо користувач натискає і утримує клавішу ANSI (щодо білоруського режиму ANSI см. В главі 11), виникає інша послідовність подій:

Клавіша вниз • Натиснути клавішу • клавіша вгору.

Це продовжується до тих пір, поки користувач не відпустить клавішу; тоді станеться подія Кнопка вгору.

При натисканні та відпусканні клавіші, яка не є клавішею ANSI, виникають події:

Клавіша вниз • клавіша вгору.

Якщо користувач натискає і утримує таку клавішу, то до її відпускання виникає і повторюється подія Кнопка вниз, а при відпуску відбувається подія Кнопка вгору.

Якщо при натисканні тієї чи іншої клавіші передбачено інше подія елемента управління, то ця подія виникає після Натиснути клавішу, але до Кнопка вгору. Наприклад, якщо натискання клавіші призводить до зміни тексту в поле, то послідовність подій така:

Клавіша вниз • Натиснути клавішу • Зміна • клавіша вгору.

Якщо натискання клавіші викликає переклад фокуса з одного елемента управління на інший, то подія Кнопка вниз виникає для першого елемента управління, а події Натиснути клавішу і Кнопка вгору - для другого. Наприклад, якщо користувач змінює дані в елементі управління і натискає клавішу TAB для переходу до наступного елементу, то виникають такі події:

• для першого елемента управління:

Клавіша вниз • До поновлення • Після поновлення • Вихід • не сфокусоване;

• для другого елементу управління:

Вхід • Отримання фокусу • Натиснути клавішу • Кнопка вгору.

Якщо покажчик миші встановлений на елементі управління форми, а користувач натискає і відпускає кнопку миші, то виникає наступна ланцюжок подій для елемента управління:

Кнопка вниз • Кнопка вгору • Клацнути по кнопці.

Якщо фокус знаходиться на одному елементі управління, а користувач встановлює вказівник на іншому і клацає її кнопкою, то виникають такі події:

• для першого елемента управління:

Вихід • не сфокусоване;

• для другого елементу управління:

Вхід • Отримання фокусу • Кнопка вниз • Кнопка вгору • Клацнути по кнопці.

Якщо користувач встановлює вказівник на елементі управління в іншому записі і клацає кнопкою миші, то для форми подія Поточний запис виникає до події Вхід для елемента управління.

Подвійне клацання по кнопці миші призводить до виникнення двох подій: Двічі клацнути по кнопці і Клацнути по кнопці. Наприклад, якщо покажчик встановлений на елементі управління, який не є кнопкою, то подвійне клацання кнопкою миші викликає наступний ланцюжок подій для елемента управління:

Кнопка вниз • Кнопка вгору • Клацнути по кнопці • Двічі клацнути по кнопці • Кнопка вгору.

При подвійному натисканні кнопкою миші на елементі управління, який є кнопкою, ці події виникають після другої події Клацнути по кнопці.

Подія Переміщення покажчика миші для форми, розділу або елемента управління відбувається при переміщенні покажчика відповідно по формі, розділу або елемента керування. Ця подія не залежить від інших подій миші.

Відкриття • Включення • Відключення • Закриття.

При переході з одного вікна відкритого звіту в інше виникає подія для першого звіту і Включення - для другого:

Відключення (для звіту 1) • Включення (для звіту 2).

Подія Відключення звіту відбувається також при переході з вікна звіту в інше вікно Microsoft Access. Однак Відключення не виникає при переході в діалогове вікно, в вікно форми, де встановлено значення Так для властивості Спливаюче вікно, або у вікно іншої програми.

При відкритті звіту, який створений на основі запиту, Microsoft Access генерує подія Відкрити до виконання базового запиту. Завдяки цьому можна включити в звіт умови відбору за допомогою макросу або процедури обробки події, так як вони запускаються у відповідь на подію Відкрити. Макрос або процедура обробки події дозволяють відкрити спеціальне діалогове вікно, через яке користувач вводить в звіт критерії відбору.

Події розділів звіту

Поділіться на сторінці

Схожі статті