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

Обычно для обработки событий в формах и отчетах используют процедуры типа Sub (подпрограммы) или макросы. Однако иногда можно и даже нужно использовать функции. Дело в том, что если в рамках одной формы делается множество однотипных задач, то лучше создать одну процедуру — функцию для выполнения этих задач, описать ее на уровне модуля формы, т. е. в разделе General, а потом вызывать из любого места в форме. Если это необходимо, для такой функции определяется один или несколько параметров, которые передаются при вызове данной функции. И хотя значение, возвращаемое функцией, не используется (а обычно и не определяется), применение ее оправдано не только потому, что требуется писать меньше строк кода, а главным образом потому, что минимизация кода в модуле формы ускоряет ее открытие.
Если же идентичные задачи решаются в разных формах, например, одна и та же реакция предусматривается для одинаковых кнопок в разных формах, то такую функцию нужно написать в стандартном модуле базы данных.
Совет
Если форма сложная, например содержит большое количество элементов управления, в том числе поля со списками, то в целях повышения ее быстродействия рекомендуется удалить модуль формы, а все процедуры обработки событий заменить функциями, которые следует при этом вынести в стандартный модуль.
Допустим, вы отображаете в форме список каких-либо объектов, например счетов клиента. Обычно это делается в подчиненной форме табличного или ленточного вида, в которой отображаются наиболее важные характеристики счета: номер счета, дата выписки, наименование клиента, сумма. И вы хотите дать возможность пользователю при желании посмотреть тот счет, который он выбрал, установив курсор на соответствующую строчку. Это можно сделать, создав процедуру открытия формы счета с нужной записью при двойном щелчке мыши на строчке счета. Естественно, что форма должна открываться при щелчке в любом поле подчиненной формы. Вместо того чтобы в каждом поле подчиненной формы на событие Двойное нажатие (DblClick) создавать процедуру обработки событий, можно создать одну функцию и присоединить ее ко всем полям. Функция будет выглядеть так:
Private Function Order_DblClick()
Dim strCriteria As String
On Error Goto Err Order DblClick
strCriteria = "КодЗаказа = Forms![Заказы клиента]!_ [Заказы клиента подчиненная].form!КодЗаказа"
DoCmd.OpenForm "Заказы", acNormal, , strCriteria
Exit_Order_DblClick: Exit Function
Err_Order_DblClick: ; MsgBox Err.Description Resume Exit_Order_DblClick
End Function
А присоединить эту функцию к событию элемента управления формы можно так, как показано. Мы сделали это для формы "Заказы клиента" (Customer Orders) приложения (NorthWind).
Еще один пример применения функции для обработки событий в форме вы может увидеть в базе данных "Контакты" (Contacts) В этом приложении с помощью Мастера кнопочных форм создана главная кнопоч ная форма, которая открывается при открытии приложения. На форме имеются не сколько кнопок, каждая из которых выполняет определенную функцию, но обрабаты ваются они все одинаково. Для этого мастер создает функцию =HandleButtonClick которая имеет один аргумент — идентификатор нажатой кнопки. Вызов функци! выполняется, как показано. Аргумент определяет нажатую клавишу. Oi обрабатывается программой в блоке Select Case, после чего выполняется соот ветствующее действие.
 В данной главе были приведены основные сведения, необходимые для программирования приложений в Access 2010, и мы рассмотрели несколько примеров использования процедур обработки событий в формах. Овладев основным инструментарием и получив необходимые навыки, вы сможете сами создавать процедуры обработки событий в приложениях Access. Дальнейшие главы расширят ваше представление о возможностях языка VBA при интеграции приложений Access с другими компонентами семейства Microsoft Office, а также при создании сложных многопользовательских и клиент-серверных приложений.

Настройка пользовательского интерфейса
Для того чтобы создать приложение Access, требуется решить две важнейшие задачи: спроектировать эффективную структуру таблиц и их взаимосвязей (модель данных) и обеспечить удобный пользовательский интерфейс. О том, как эффективно спроектировать базу данных, мы рассказали , первые главы книги были посвящены разработке основных объектов Access: форм, отчетов, страниц доступа к данным. Чтобы создать единое целое из набора отдельных объектов базы данных, используются макросы и процедуры VBA, разработка которых рассматривалась . Для того чтобы приложение было законченным, применяются дополнительные элементы, такие как специальное меню команд или заменяющая его Главная кнопочная форма, панели инструментов, контекстное меню, а если вы любите пользоваться клавиатурой и готовы запомнить десятка полтора комбинаций клавиш, нужно создать клавиши быстрого вызова.
Данная глава будет посвящена тому, как придать законченный вид приложению. В ней мы рассмотрим следующие вопросы:

  • Как настроить параметры среды Access?
  • Какие существуют способы запуска приложения и как обеспечить выполнение начальных действий при запуске?
  • Зачем и как создать Главную кнопочную форму приложения?
  • Как создать и настроить меню и инструментальные панели, как их "прятать" и показывать в нужный момент?

Как назначить меню и панели инструментов формам, отчетам и элементам управления?