Связывание строк меню, панелей инструментов и контекстных меню с формами и отчетами

Созданные строки меню, контекстные меню и панели инструментов можно связывать с формами и отчетами. Для этого необходимо определить соответствующие свойства формы или отчета. Список этих свойств для формы показан на. Есть аналогичные свойства и у отчета (кроме параметров, определяющих контекстное меню).
Свойство Контекстные меню (Shortcut Menu) позволяет разрешить или запретить вывод на экран контекстного меню для этой формы. Причем, если специальное контекстное меню в поле Контекстное меню (Shortcut Menu Bar) не указано, а поле Контекстные меню (Shortcut Menu) имеет значение Да (Yes), то при щелчке правой кнопкой мыши по этой форме будет выводиться стандартное контекстное меню.
Следует еще отметить, что контекстное меню может быть связано не только с формой, но и с элементом формы, т. к. элемент управления имеет свойство Контекстное меню (Shortcut Menu Bar) на вкладке Другие (Others).
Замечание
Все изложенные выше способы изменения меню и панелей инструментов можно применять также к встроенным меню и панелям инструментов Access, настраивая их нужным образом. Если требуется создать новую панель инструментов, которая была бы доступнаво всех базах данных, с которыми вы работаете, используйте встроенные панели инструментов Служебная программа 1 (Utility 1) и Служебная программа 2 (Utility 2) (они отличаются от создаваемых вами панелей инструментов тем, что доступны не только в том приложении, в котором вы их создали).
 
Изменение меню и панелей инструментов с помощью VBA
Изложение возможностей создания и настройки меню и панелей инструментов было бы не полным, если бы мы ничего не сказали о возможностях программного управления этими объектами. Такие возможности понадобятся вам, если нужно, например:

  • сделать недоступным меню, команду меню или кнопку на панели инструментов;
  • скрыть или показать меню, команду меню или кнопку панели инструментов;
  • скрыть или показать строку меню или панель инструментов.

Чаще всего приходится изменять панели команд, разрешая или запрещая доступ к отдельным их элементам — командам меню или кнопкам. Это может быть связано либо с разграничениями прав доступа, либо с невозможностью в текущей ситуации выполнить определенную команду. Для доступа к панелям команд и их элементам используется семейство CommandBars объектной модели Microsoft Office. Ссылка на конкретную строку меню или панель инструментов создается стандартным способом: с помощью оператора set. Ниже приведен пример функции, которая позволяет изменить значение свойства Доступ (Enabled) элемента панели команд.
Function SetEnabled (barName As String, index As Integer, state As Boolean) Dim cbar As Object
Set cbar = CornmandBars (barName)
cbar.Controls (index) .Enabled = state
SetEnabled = True
End Function
В качестве параметров в функцию передаются имя панели команд barName, индекс элемента панели index и значение свойства state.
Переменная cbar будет содержать ссылку на нужную панель (обращение к объекту семейства CommandBars в данном случае выполняется по имени объекта).
Семейство Controls содержит все элементы панели. Для доступа к конкретному элементу используется индекс, соответствующий номеру элемента в семействе. В отличие от других семейств объектной модели VBA в семействе Controls элементы нумеруются не с нуля, а с единицы. Это означает, что для ссылки на первый элемент семейства необходимо использовать выражение CommandBar .Controls (1) вместо ожидаемого CommandBar. Controls (0).
Аналогичная функция может быть использована для того, чтобы скрыть или показать отдельные меню или кнопки на панели команд, только изменяться должно свойство Visible того же самого семейства Controls:
Function SetEnabled (barName As String, index As Integer, state As Boolean)
Dim cbar As Object
Set cbar = CommandBars(barName)
cbar.Controls(index).Visible = state
SetEnabled = True
End Function
Созданные вами меню и панели инструментов должны в нужное время появляться на экране. В большинстве случаев это обеспечивается тем, что создается одна общая строка меню и одна общая панель инструментов, которые выводятся на экран при запуске приложения и заменяются в нужное время меню и панелями инструментов, связанными с формами и отчетами (если, конечно, вы отключили встроенные меню и панели инструментов Access, задав соответствующие параметры запуска).
Тем не менее, существует возможность программно управлять выводом на экран строк меню и панелей инструментов.
Чтобы задать свою собственную строку меню в качестве главной строки меню в приложении, можно либо изменить параметр Строка меню (Menu Bar) в окне Параметры запуска (Startup), либо установить свойство MenuBar объекта Application.
Application.MenuBar = "Главное меню"
Для того чтобы показывать или прятать панели инструментов в процессе работы программы, можно использовать макрокоманду ПанельИнструментов (ShowToolbar). Эта макрокоманда имеет два аргумента: имя панели инструментов и значение Показать (Show).
Поле Показать (Show) на панели аргументов макроса позволяет определить три значения:

  • Да (Yes) — панель инструментов будет всегда отображаться на экране;
  • В обычном режиме (Where Appropriate) — панель инструментов будет отображаться только при необходимости, данный режим используется для встроенных панелей инструментов;
  • Нет (No) — панель инструментов будет скрыта.

Вместо макроса можно использовать метод showToolbar объекта DoCmd. Пример, приведенный на, может быть выражен в коде VBA следующим образом:
DoCmd ShowToolbar "Главное меню", acToolbarYes,
где AcToolbarYes — встроенная константа.
 Очень важно обеспечить приложение удобным интерфейсом. Access позволяет снабдить базу данных всеми необходимыми элементами интерфейса — меню и панелями инструментов, формами для ввода данных, комбинациями клавиш для быстрого вызова макросов и т. д. Все это делает работу с базой данных удобной и придает приложению законченный вид.

В предыдущих главах мы рассказали, как создаются разнообразные объекты базы данных, предназначенные для хранения и обработки данных. Материал этой главы поможет в разработке интерфейса базы данных Access для работы с ее объектами.