Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Назначение макроса событию
Наиболее часто макросы используются в приложении Access для обработки событий. Событие — это любое действие, распознаваемое объектом. Можно определить реакцию объекта на событие. События происходят в результате действий пользователя, выполнения инструкций VBA или генерируются системой. Примером событий является вывод на экран формы, отчета, ввод данных в текстовое поле, нажатие кнопки мыши или клавиши. Каждому из этих событий можно назначить макрос или процедуру VBA, которые будут автоматически выполняться в ответ на произошедшее событие. Практически все программирование в Access сводится к написанию макросов или процедур, обрабатывающих события, т. е. программируется реакция объектов на события. Существует большое количество различного рода событий, на которые реагируют объекты, причем часто возникает не одно, а целая последовательность событий. ВО Первых. Откроем форму Клиенты (Customers) в базе данных Борей. В этой форме отображается информация о клиенте. Допустим, мы хотели бы видеть не только эту информацию, но и данные о купленных клиентом продуктах. Было бы хорошо создать кнопку Заказы клиента, при нажатии которой появлялась бы форма Заказы (Orders) с заказами только того клиента, который в данный момент выбран в форме клиенты (Customers). Для того чтобы получить желаемое, создадим макрос, который будет выполняться, когда произойдет событие Нажатие кнопки (On Click) в форме Клиенты (Customers). Чтобы создать макрос, определяющий описанную реакцию приложения на событие Нажатие кнопки (OnClick), выполните следующее: 1. Откройте форму клиенты (Customers) в режиме Конструктора. 2. Создайте кнопку в области заголовка формы. При этом кнопка Мастера на пане 3. Откройте окно свойств только что созданной кнопки, если оно еще не открыто, 4. Обратите внимание, сколько разных событий связано только с командной кнопкой. Помимо обычного нажатия, которое мы сейчас и будем использовать, в набор событий кнопки входят получение и потеря фокуса, двойной щелчок кнопкой мыши, простое перемещение указателя мыши над кнопкой и пр. Такое многообразие событий дает разработчику большие возможности по созданию удобного интерфейса пользователя. Теперь найдите в списке событие Нажатие кнопки (On Click) и установите курсор в соответствующую ячейку. Это поле со списком, и в данный момент оно пустое. Если открыть этот список, то первым его элементом будет [Процедура обработки событий] ([Event procedure]), а далее идет перечень всех макросов, существующих в приложении (рис. 11). Рис. 11. Диалоговое окно свойств кнопки 5. Поскольку нужного нам макроса в списке нет, давайте его создадим. Для этого нажмите кнопку Построителя, находящуюся справа от поля. Появится окно По строитель (Choose Builder), в котором предлагается выбрать один из трех Построителей: Выражения (Expression Builder), Макросы (Macro Builder) и Програм мы (Code Builder) (рис. 12). Рис. 12. Диалоговое окно Построитель 6. Выберите Макросы (Macro Builder) и нажмите кнопку ОК. Откроется окно мак В макрос нужно добавить единственную макрокоманду ОткрытьФорму (OpenForm). Таблица 4. Макрокоманда ОткрытьФорму
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. Макрокоманда закрыть
Рис . 14. Макрос для закрытия формы Закройте окно макроса, сохранив изменения. Измените имя макроса, назначенного событию Включение (On Activate). Для этого выберите в списке или введите имя Клиенты.Закрыть (Customers.Close) и нажмите клавишу <Enter>. Теперь сохраните форму, перейдите в режим формы и проверьте, как работают созданные макросы. |
Последнее изменение этой страницы: 2019-04-19; Просмотров: 244; Нарушение авторского права страницы