Использование функций для обработки событий

Реферат - Компьютеры, программирование

Другие рефераты по предмету Компьютеры, программирование

 

Лабораторная работа №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. Для работы этих процедур выполняются следующие действия.

 

  1. Добавить функции в новый модуль.

 

  1. Открыть форму Products (Товары) в режиме конструктора. В разделе примечания формы добавить кнопку cmdOpenHide и установить свойство Caption (Подпись) равным Открыть Categories. Выберать в свойствах кнопки событие Нажатие кнопки (OnClick) и установить = OpenHide(“Categories”)

 

 

  1. Открыть форму Categories (Категории) в режиме конструктора. В разделе примечания формы добавить кнопку cmdCloseUnhide и установить свойство Caption (Подпись) равным Закрыть форму. Выбрать в свойствах кнопки событие Нажатие кнопки (OnClick) и установить = CloseUnhide()

 

 

Задание №1

Реализовать возможность открытия формы (Участники) из другой формы (Мероприятия). Вторая форма должна хранить информацию о том, из какой формы она была открыта, чтобы после закрытия восстановить на экране именно эту форму. Для этой цели используем свойство, зарезервированное для пользователей Tag.

Проверьте работу:

Откройте форму Мероприятия. Нажмите кнопку Открытие Участников. Текущая форма исчезнет с экрана и откроется форма Участники. Нажмите кнопку Закрыть форму, снова появится форма Мероприятия.

 

 

 

 

 

 

Синхронизация двух форм

 

Рассмотрим пример создадим процедуру обработки события, которая будет открывать форму Customers из формы Orders и синхронизировать ее с формой Orders. Для работы этих процедур выполняются следующие действия.

 

 

  1. Открытие формы 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