Присоединение макросов к формам
Самые изощренные макросы работают вместе с формами вашей БД. С помощью такого объединения можно создать макрос, который выполняется автоматически, когда что-то происходит (например, когда кнопка щелкается мышью или изменяется запись). Можно также создать гораздо более гибкие макросы, у которых нет фиксированных значений аргументов — вместо этого нужные данные они могут взять из текстовых полей формы.
В следующих разделах вы узнаете, как помочь макросам и формам объединиться.
Что такое событие
До настоящего момента вы выполняли макросы тривиальным способом: выискиванием в области переходов нужных вам элементов и затем запуском их вручную. Но в хорошо спроектированной БД макросы редко играют на публике. Чаще они остаются за кадром, пока не засверкают в действии. Можно создать макрос, который запускается при щелчке кнопки мышью, открытии формы или внесении изменения в текстовое поле. Эти побудительные причины называют событиями.
У формы есть три типа событий.
■ События элементов управления. Эти события особенно полезны. Они происходят, когда вы что-то делаете с элементом управления. Например, когда вы щелкаете кнопку мышью, возникает событие Нажатие кнопки(On Click). (Подходящий момент для выполнения любой макрокоманды.) Когда изменяется значение в элементе Поле,возникает событие Изменение(On Change). (Самое время проверить, имеет ли смысл введенное
значение с помощью удачно подобранного условия на значение.) Как вы увидите, большинство названий событий на английском языке начинаются со слова "On".
Примечание
У многих элементов управления одинаковые события. Если у вас на форме два поля и одна кнопка, у всех у них есть событие Нажатие кнопки(On Click). Но путаницы не возникает, поскольку программа Access отслеживает, какое событие возникает в каком элементе управления.
События разделов. Как вы узнали раньше, формы имеют разделы, поэтому можно отделить содержимое заголовка и примечания от остальных данных записи. У каждого раздела есть несколько собственных событий, которые происходят, когда вы перемещаете мышь в разделе (ПеремещениеУказателя(On Mouse Move)) или щелкаете кнопкой мыши на пустом месте (НажатиеКнопки(On Click)). Эти события, как правило, менее полезны для программистов макроса.
События формы. Длинный список более общих, событий относится к форме. Этот список включает события, которые возникают, когда форма открывается впервые (Открытие(On Open)) и когда она закрывается (Закрытие(On Close)), когда вы переходите от одной записи к следующей (Текущая Запись(On Current)) и когда завершается операция над данными, например, обновление (После обновления(After Update)).
Рис. 15.18.Здесь показаны события для типичного поля ввода. Если щелкнуть кнопкой мыши одно из полей вкладки События,в строке состояния, в левой нижней части окна, появляется однострочное описание события. Как можно видеть, сейчас все поля событий пусты, что означает отсутствие присоединенного макроса
Для просмотра событий, относящихся к разным частям формы, выполните следующие действия.
1. Откройте форму в режиме Конструктора.
Если на экране нет Окна свойств,отобразите его, выбрав на ленте Инструменты конструктора форм | Конструктор → Сервис → Страница свойств(Form Tools | Design → Tools → Property Sheet).
2. Выберите элемент, имеющий события, которые вы хотите исследовать.
Можно выбрать отдельный элемент управления, раздел или форму. Если не удается выделить мышью нужный элемент в рабочей области формы, просто выберите его по имени из раскрывающегося списка в верхней части Окна свойств.
3. В Окне свойствперейдите на вкладку События.
Теперь вы увидите список событий, предоставляемых элементом управления, как показано на рис. 15.18.
Самая большая проблема применения событий — выбор тех, которые нужно использовать. Если потратить несколько секунд на изучение событий вашей формы, обнаружатся десятки событий, многие из которых редко используются или являются узкоспециализированными. Тут может оказаться очень кстати табл. 15.4 — в ней обращается внимание на события, наиболее полезные для программирования макроса.
Таблица 15.4. События, полезные для программирования макроса
Элемент управления | Событие | Описание |
Все элементы управления | Вход (On Enter) | Возникает, когда вы переходите к элементу управления в первый раз (либо нажатием клавиши, такой как <Таb>, либо щелчком кнопки мыши) |
Перемещение указателя (On Mouse Move) | Происходит, когда мышь перемещается по элементу управления | |
Любой редактируемый элемент управления | Изменение (On Change) | Возникает, когда изменяется значение в элементе управления |
Кнопка | Нажатие кнопки (On Click) | Происходит, когда кнопку щелкают мышью. У других элементов управления тоже есть событие, связанное со щелчком кнопкой мыши, но большинство пользователей привыкло щелкать мышью кнопки, чтобы выполнить какое-либо действие |
Поле со списком | Отсутствие в списке(On Not In List) | Возникает, когда вводится значение, которого нет в списке |
Форма | Загрузка (On Load) | Происходит, когда форма открывается впервые (и вы можете инициализировать ее) |
Таблица 15.4 (окончание)
Элемент управления | Событие | Описание |
Закрытие (On Close) | Возникает, когда форма закрывается. Можно отменить это событие, если хотите оставить форму открытой | |
Текущая запись (On Current) | Происходит, когда вы переходите к записи (включая открытие формы и переход к первой записи) | |
Внесены изменения (On Dirty) | Возникает, когда вы вносите первое изменение в запись. Сейчас она в режиме редактирования | |
Отмена(On Undo) | Происходит, когда вы выходите из режима редактирования и отменяете внесенные изменения (обычно нажатием клавиши <Esc>) | |
До вставки (Before Insert), До обновления (Before Update), До подтверждения (Before Del Confirm) | Возникает в процессе вставки, обновления или удаления. Можно отменить это событие, если не нравится то, что видите (например, обнаружили некорректные данные) | |
После вставки (After Insert), После обновления (After Update), После подтверждения (After Del Confirm) | Происходит после завершения операции. Вы уже не можете отменить его, но может возникнуть желание отреагировать на изменения выполнением другой задачи или обновлением отображенных данных |
Примечание
События обновления, вставки и подтверждения (две последние строки таблицы) также применимы к любому редактируемому элементу управления. Поле использует события До обновленияи После обновлениядля обозначения момента изменения его значения. В главе 17 вы найдете пример, применяющий это событие для немедленной реакции на изменение конкрет- , ного поля (не дожидаясь, пока будет обновлена вся запись).
Если просмотреть вкладку Событияв Окне свойств,то можно найти множество событий, включая такие, которые позволяют реагировать на нажатие клавиши, щелчок кнопки мыши в любом месте или переход от одного элемента управления к другому. Не старайтесь запомнить все эти варианты прямо сейчас. После того как вы научитесь отвечать на событие, используя макрос, вы сможете обрабатывать практически любое событие.