Использование функций для обработки событий
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
Лабораторная работа №6
Использование функций для обработки событий.
Обычно для обработки событий в формах и отчетах используют процедуры типа Sub (подпрограммы) или макросы. Однако иногда можно и даже нужно использовать функции. Дело в том, что если в рамках одной формы делается множество однотипных задач, то лучше создать одну процедуру функцию для выполнения этих задач, описать ее на уровне модуля формы, т. е. в разделе General, а потом вызывать из любого места в форме. Если это необходимо, для такой функции определяется один или несколько параметров, которые передаются при вызове данной функции. И хотя значение, возвращаемое функцией, не используется (а обычно и не определяется), применение ее оправдано не только потому, что требуется писать меньше строк кода, а главным образом потому, что минимизация кода в модуле формы ускоряет ее
открытие.
Если же идентичные задачи решаются в разных формах, например, одна и та же реакция предусматривается для одинаковых кнопок в разных формах, то такую функцию нужно написать в стандартном модуле базы данных.
Скрытие и восстановление формы.
Функция для открытия формы:
Public Function OpenHide(strName As String)
Dim strHide As String
strHide = Screen.ActiveForm.Name
Screen.ActiveForm.Visible = False
DoCmd.OpenForm strName
Screen.ActiveForm.Tag = strHide
End Function
Screen - Объект объектной модели Microsoft Access 2002. Ссылается на конкретную форму, отчет или элемент управления, который в данный момент имеет фокус.
DoCmd - Объект объектной модели Microsoft Access 2002. Позволяет выполнить макрос или встроенную инструкцию Access с помощью процедуры на Visual Basic.
Visible свойство вывода на экран. Может иметь значение True или False. В зависимости от его значения форма будет появляться или исчезать с экрана.
Tag используемое при работе приложения свойство Дополнительные сведения (Tag). Позволяет сохранить произвольные дополнительные сведения о форме, отчете, странице доступа к данным и т. п. Представляет собой строковое значение длинной 2048 символов. Данное свойство позволяет определить для объекта кодовую строку без возникновения каких-либо побочных эффектов.
Функция для закрытия формы
Public Function Close Unhide ()
Dim strUnhide As String
If IsNull (Screen.ActiveForm.Tag) Then
DoCmd.Close
Else
strUnhide = Screen.ActiveForm.Tag
DoCmd.Close
DoCmd.SelectObject acForm, strUnhide
End If
End Function
Макрокоманда ВыделитьОбъект (SelectObject) выделяет указанный объект базы данных (в качестве аргументов необходимо указать тип объекта, который будет выбран и имя выбираемого объекта). Макрокоманда SelectObject применима к любому объекту Access, которому можно передать фокус. Эта макрокоманда переводит фокус на указанный объект и, если объект в данный момент скрыт, выводит его на экран. Для формы макрокоманда SelectObject автоматически устанавливает значение Да свойства Вывод на экран (Visible) и восстанавливает режим окна формы, указанный в свойствах формы (например, режим модальной или всплывающей формы). Для запуска макрокоманды SelectObject в программе Visual Basic следует использовать метод SelectObject объекта DoCmd.
Рассмотрим работу этих функций на примере БД Northwind и ее форм Products и Categories. Реализуем возможность открытия формы Categories из формы Products. Для работы этих процедур выполняются следующие действия.
- Добавить функции в новый модуль.
- Открыть форму Products (Товары) в режиме конструктора. В разделе примечания формы добавить кнопку cmdOpenHide и установить свойство Caption (Подпись) равным Открыть Categories. Выберать в свойствах кнопки событие Нажатие кнопки (OnClick) и установить = OpenHide(“Categories”)
- Открыть форму Categories (Категории) в режиме конструктора. В разделе примечания формы добавить кнопку cmdCloseUnhide и установить свойство Caption (Подпись) равным Закрыть форму. Выбрать в свойствах кнопки событие Нажатие кнопки (OnClick) и установить = CloseUnhide()
Задание №1
Реализовать возможность открытия формы (Участники) из другой формы (Мероприятия). Вторая форма должна хранить информацию о том, из какой формы она была открыта, чтобы после закрытия восстановить на экране именно эту форму. Для этой цели используем свойство, зарезервированное для пользователей Tag.
Проверьте работу:
Откройте форму Мероприятия. Нажмите кнопку Открытие Участников. Текущая форма исчезнет с экрана и откроется форма Участники. Нажмите кнопку Закрыть форму, снова появится форма Мероприятия.
Синхронизация двух форм
Рассмотрим пример создадим процедуру обработки события, которая будет открывать форму Customers из формы Orders и синхронизировать ее с формой Orders. Для работы этих процедур выполняются следующие действия.
- Открытие формы Orders в режиме конструктора, добавление кнопки cmdViewCustomer с подписью Сведения о покупателе (View Customer). Для события Нажатие кнопки (OnClick) вводится процедура:
Private Sub cmdViewCustomer_Click()
Dim strForm As String
Dim strWhere As String
strForm = "Customers"
strWhere = "CustomerID = Forms!Orders!CustomerID"
DoCmd.OpenForm FormName:=strForm, wherecondition:=strWhere