Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Назначение макроса событию



Наиболее часто макросы используются в приложении Access для обработки событий. Событие — это любое действие, распознаваемое объектом. Можно определить реакцию объекта на событие. События происходят в результате действий пользова­теля, выполнения инструкций VBA или генерируются системой. Примером событий является вывод на экран формы, отчета, ввод данных в текстовое поле, нажатие кнопки мыши или клавиши. Каждому из этих событий можно назначить макрос или процедуру VBA, которые будут автоматически выполняться в ответ на произо­шедшее событие. Практически все программирование в Access сводится к написа­нию макросов или процедур, обрабатывающих события, т. е. программируется реак­ция объектов на события. Существует большое количество различного рода собы­тий, на которые реагируют объекты, причем часто возникает не одно, а целая последовательность событий.

ВО Первых. Откроем форму Клиенты (Customers) в базе данных Борей. В этой форме отображается информация о клиенте. Допустим, мы хотели бы видеть не только эту информацию, но и данные о купленных клиентом продуктах. Было бы хорошо создать кнопку Заказы клиента, при нажатии которой появлялась бы форма Заказы (Orders) с заказами только того клиента, который в данный момент выбран в форме клиенты (Customers). Для того чтобы получить желаемое, создадим макрос, который будет выполняться, когда произойдет событие Нажатие кнопки (On Click) в форме Клиенты (Customers).

Чтобы создать макрос, определяющий описанную реакцию приложения на событие Нажатие кнопки (OnClick), выполните следующее:

1. Откройте форму клиенты (Customers) в режиме Конструктора.

2. Создайте кнопку в области заголовка формы. При этом кнопка Мастера на пане­
ли элементов должна быть отжата, т. к. в противном случае вам будет предложе­
но создать процедуру обработки событий, а не макрос.

3. Откройте окно свойств только что созданной кнопки, если оно еще не открыто,
и раскройте вкладку События (Event).

4. Обратите внимание, сколько разных событий связано только с командной кноп­кой. Помимо обычного нажатия, которое мы сейчас и будем использовать, в на­бор событий кнопки входят получение и потеря фокуса, двойной щелчок кноп­кой мыши, простое перемещение указателя мыши над кнопкой и пр. Такое мно­гообразие событий дает разработчику большие возможности по созданию удобного интерфейса пользователя. Теперь найдите в списке событие Нажатие кнопки (On Click) и установите курсор в соответствующую ячейку. Это поле со списком, и в данный момент оно пустое. Если открыть этот список, то первым его элементом будет [Процедура обработки событий] ([Event procedure]), а далее идет перечень всех макросов, существующих в приложении (рис. 11).

Рис. 11. Диалоговое окно свойств кнопки

5. Поскольку нужного нам макроса в списке нет, давайте его создадим. Для этого нажмите кнопку Построителя, находящуюся справа от поля. Появится окно По строитель (Choose Builder), в котором предлагается выбрать один из трех По­строителей: Выражения (Expression Builder), Макросы (Macro Builder) и Програм­ мы (Code Builder) (рис. 12).

Рис. 12. Диалоговое окно Построитель

6. Выберите Макросы (Macro Builder) и нажмите кнопку ОК. Откроется окно мак­
росов и диалоговое окно, в которое нужно ввести имя создаваемого макроса.
Введите имя Заказы клиента.

В макрос нужно добавить единственную макрокоманду ОткрытьФорму (OpenForm).
Значения аргументов этой макрокоманды приведены в табл. 4.

Таблица 4. Макрокоманда ОткрытьФорму

Аргумент Значение Пояснение
Имя формы (Form Name) Заказы (Orders) Указывается имя открываемой формы. Это обязательный аргумент
Режим (View) Форма (Form) Определяет режим, в котором форма должна быть открыта. Он может принимать значения: Форма (Form), Конструктор (Design), Просмотр (Print Preview), Таблица (Datasheet), Сводная таблица (PivotTable) и Сводная Диаграмма(PivotChart)
отбора Условие (Condition) [КодКлиента]= [Forms]![Клиенты]![КодКлиента] Определяет условие для отбора записей, отображаемых в фор ме. Условие представляет собой выражение. В данном случае это выражение содержит ссылку на элемент управления КодКлиента (CustomerlD) в фор ме Клиенты (Customers), что позволяет выбрать все записи из таблицы Заказы (Orders),в которых код клиента равняется значению, заданному в поле КодКлиента (CustomerlD) формы Клиенты (Customers)
Режим данных (Data Mode) Только чтение (Rea d Only) Определяет способ работы с данными и может принимать одно из значений: Добавление(Add), Изменение (Edit) или Только чтение (Read Only)
Режим окна (Window Mode) Обычное (Normal) определяет тип окна: Обычное(Normal), Невидимое (Hidden), Значок (Icon) и Окно диалога(Dialog)

8. Закройте окно макроса, сохранив изменения. В окне свойств кнопки в поле Нажатие кнопки (On Click) появится имя макроса Заказы клиента.

9. Раскройте вкладку Макет (Format) и введите в поле Подпись (Caption) название кнопки: Заказы клиента. То же самое имя рекомендуется ввести в поле Имя (Name) на вкладке Другие (Other).

Теперь остается перейти в режим формы и проверить, как макрос отрабатывает событие Нажатие кнопки (On Click). Если вы нигде не ошиблись, то должны увидеть на экране картинку, похожую на ту, что изображена на рис. 13.

Рис. 13. Форма Заказы

Однако мы выполнили еще не все необходимые действия. Если перейти к следую­щей записи в форме Клиенты (Customers), данные в форме Заказы (Orders) уже не будут правильно отражать ситуацию — они не меняются. Нужно сделать так, чтобы эти данные изменялись синхронно с переходом к другим записям в форме Клиенты (Customers), либо чтобы это окно просто закрывалось.

Рассмотрим реализацию вто­рого варианта. Форма Заказы (Orders) открывается, когда мы нажимаем кнопку За­казы клиента, и становится активной. Требуется сделать так, чтобы она закрывалась, когда активной становится форма клиенты (Customers). Для этого нужно выбрать соответствующее событие и задать процедуру или макрос его обработки. Если вы откроете окно Свойства (Properties) формы Клиенты (Customers) и раскроете вкладку События (Event), то среди множества событий увидите событие Включение (On Activate). Это как раз то событие, которое нам нужно. Выберем это событие, но те­перь мы не будем создавать новую группу макросов, а добавим новый макрос в группу макросов Клиенты (Customers), которая уже содержит макросы для формы Клиенты (Customers). Выберите эту группу макросов в раскрывающемся списке и нажмите кнопку Построителя. Откроется окно, в котором отобразятся два макроса. Добавим к ним еще один макрос. Назовем его Закрытие и введем макрокоманду Закрыть (Close) с соответствующими параметрами (табл. 5). Но перед закрытием формы необходимо проверить, открыта ли она. Для этого воспользуемся функцией isLoaded(), которая возвращает значение Истина, если форма открыта, и Ложь —в противном случае. В качестве аргумента в функцию isLoaded() нужно передать имя формы. Итак, в столбец Условие (Condition), напротив команды закрыть (Close), введите IsLoaded( "Заказы") (или IsLoaded ("Orders")). Готовый макрос по­казан на рис. 14.

Таблица 5. Макрокоманда закрыть

Аргумент Значение Пояснение
Тип объекта (Object Type) Форма (Forms) Определяет тип закрываемого объекта. Если этот аргу­мент не задан, то закрывается текущее окно
Имя объекта (Object Name) Заказы (Orders) Определяет имя закрываемого объекта
Сохранение (Save) Нет (No) Позволяет определить, будет ли Access при закрытии формы отображать диалоговое окно для подтверждения сохранения измененных данных. Поскольку мы открыва­ли форму Заказы (Orders) в режиме только чтение, из­менение данных запрещено, поэтому данному аргументу необходимо присвоить значение Нет (No)

Рис . 14. Макрос для закрытия формы

Закройте окно макроса, сохранив изменения. Измените имя макроса, назначенного событию Включение (On Activate). Для этого выберите в списке или введите имя Клиенты.Закрыть (Customers.Close) и нажмите клавишу <Enter>. Теперь сохраните форму, перейдите в режим формы и проверьте, как работают созданные макросы.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 217; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь