Зміна меню і панелей інструментів за допомогою vba

Виклад можливостей створення і налаштування меню і панелей інструментів було б не повним, якби ми нічого не сказали про можливості програмного керування цими об'єктами. Такі можливості знадобляться вам, якщо потрібно, наприклад:

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

Як параметри в функцію передаються ім'я панелі команд barName, індекс елемента панелі index і значення властивості state.

Мінлива cbar буде містити посилання на потрібну панель (звернення до об'єкту сімейства CommandBars в даному випадку виконується по імені об'єкта).

Сімейство Controls містить всі елементи панелі. Для доступу до конкретного елементу використовується індекс, що відповідає номеру елемента в сімействі. На відміну від інших сімейств об'єктної моделі VBA в сімействі Controls елементи нумеруються не з нуля, а з одиниці. Це означає, що для посилання на перший елемент сімейства необхідно вжити вислів CommandBar .Controls (1) замість очікуваного CommandBar. Controls (0).

Аналогічна функція може бути використана для того, щоб приховати або показати окремі меню або кнопки на панелі команд, тільки змінюватися має властивість Visible того ж самого сімейства Controls:

Створені вами меню і панелі інструментів повинні в потрібний час з'являтися на екрані. У більшості випадків це забезпечується тим, що створюється одна загальна рядок меню і одна загальна панель інструментів, які виводяться на екран при запуску програми і замінюються в потрібний час меню і панелями інструментів, пов'язаними з формами і звітами (якщо, звичайно, ви відключили вбудовані меню і панелі інструментів Access, задавши відповідні параметри запуску).

Проте, існує можливість програмно керувати виведенням на екран рядків меню і панелей інструментів.

Щоб задати свою власну рядок меню в якості головної рядки меню в додатку, можна або змінити параметр Рядок меню (Menu Bar) у вікні Параметри запуску (Startup), або встановити властивість MenuBar об'єкта Application (див. Розд. "Об'єктна модель Microsoft Access" гл . 13):

Application.MenuBar = "Головне меню"

Для того щоб показувати або ховати панелі інструментів в процесі роботи програми, можна використовувати макрос ПанельІнструментов (ShowToolbar). Ця макрокоманда має два аргументи: ім'я панелі інструментів і значення Показати (Show) (рис. 14.34).

Мал. 14.34. Макрокоманда ПанельІнструментов

Поле Показати (Show) на панелі аргументів макросу дозволяє визначити три значення:

  • Так (Yes) - панель інструментів буде завжди відображатися на екрані;
  • У звичайному режимі (Where Appropriate) - панель інструментів буде відображатися тільки при необхідності, даний режим використовується для вбудованих панелей інструментів;
  • Ні (No) - панель інструментів буде прихована.

Замість макросу можна використовувати метод showToolbar об'єкта DoCmd. Приклад, наведений на рис. 14.34, може бути виражений в коді VBA наступним чином:

DoCmd ShowToolbar "Головне меню", acToolbarYes,

де AcToolbarYes - вбудована константа.