Присоединение макросов к формам

Самые изощренные макросы работают вместе с формами вашей БД. С помощью такого объ­единения можно создать макрос, который выполняется автоматически, когда что-то проис­ходит (например, когда кнопка щелкается мышью или изменяется запись). Можно также создать гораздо более гибкие макросы, у которых нет фиксированных значений аргументов — вместо этого нужные данные они могут взять из текстовых полей формы.

В следующих разделах вы узнаете, как помочь макросам и формам объединиться.

 

 

Что такое событие

До настоящего момента вы выполняли макросы тривиальным способом: выискиванием в области переходов нужных вам элементов и затем запуском их вручную. Но в хорошо спро­ектированной БД макросы редко играют на публике. Чаще они остаются за кадром, пока не засверкают в действии. Можно создать макрос, который запускается при щелчке кнопки мышью, открытии формы или внесении изменения в текстовое поле. Эти побудительные причины называют событиями.

У формы есть три типа событий.

События элементов управления. Эти события особенно полезны. Они происходят, когда вы что-то делаете с элементом управления. Например, когда вы щелкаете кнопку мышью, возникает событие Нажатие кнопки(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 вы найдете пример, применяющий это событие для немедленной реакции на изменение конкрет- , ного поля (не дожидаясь, пока будет обновлена вся запись).

 

 

Если просмотреть вкладку Событияв Окне свойств,то можно найти множество собы­тий, включая такие, которые позволяют реагировать на нажатие клавиши, щелчок кнопки мыши в любом месте или переход от одного элемента управления к другому. Не старайтесь запомнить все эти варианты прямо сейчас. После того как вы научитесь отвечать на событие, используя макрос, вы сможете обрабатывать практически любое событие.