Динамічні меню в MS Access – затягуємо гайки, MS Office, Програмні керівництва, статті

У статті “Використання динамічних меню в Access” розглядалося, як створити меню на основі панелі інструментів. Прийшов кілька листів із запитаннями. Як приховати системне меню? Як заборонити користувачам виконувати настройку такого меню самостійно? Як перехоплювати натискання спеціальних клавіш, що дозволяють відображати системне меню, вікно бази даних і інші, і блокувати стандартні дії з ним або призначати свої дії.


Даний код, дозволяє відключити системне меню MS Access:


Dim myMenuBar As CommandBar
Set myMenuBar = CommandBars(“Menu Bar”)
myMenuBar.Enabled = False “відповідно = True, відобразить системне меню.


Наступний рядок: Application.SetOption “Can Customize Toolbars”, False


забороняє користувачам настройку меню, створеного на основі панелі інструментів. Користувач при счелчке правою кнопкою миші по меню, не виявить стандартного пункту Customize …


Рядок: Application.SetOption “Built-In Toolbars Available”, False


погасить, і заборонить поява всіх вбудованих контекстно залежних панелей інструментів, таких як, наприклад: “form design”, “macro design”, і т.д.


Для перехоплення “гарячих” клавіш необхідно створити макро, наприклад з ім’ям AutoKeysUser:


У колонці Macro Name введіть назву клавіші, наприклад {F11} – для блокування системного Window (вікна БД). У колонці Action виберіть дію. Якщо просто потрібно заблокувати натиснення клавіші, то виберіть дію beep – сигнал. При натисканні користувачем на клавішу F11 прозвучить сигнал. Можна вибрати будь-яку дію, наприклад OpenForm і відкривати форму з курсами валют. Задайте всі клавіші, які потрібно заблокувати, введіть дії і збережіть макрос. Одночасні натискання клавіш вводяться так: ^ {F11} – Ctrl і F11, + {F5} – Shift і F5. Що б макрос вступив в дію, його треба запустити рядком: Application.SetOption “Key Assignment Macro”, “AutoKeysUser”. Таким чином можна не тільки блокувати деякі клавіші, але і створювати свої “гарячі клавіші”.


Рекомендую створити функцію:


Function ClearSystem()
    Application.SetOption “Key Assignment Macro”, “AutoKeysUser”
    Application.SetOption “Built-In Toolbars Available”, False
    Application.SetOption “Can Customize Toolbars”, False
End Function


і запускати її в момент ініціалізації програми. На додаток до цього можна заборонити зупиняти запуск autoexec натисканням Shift, це було описано на цьому сайті.


Меню на основі панелі інструментів, може відкривати форму, звіт, запит, макрос. Якщо треба запускати певну функцію, то створіть макрос і перерахуйте там всі такі функції з іменами (Macro Name). При настройці меню, на такі функції можна посилатися, вибравши All Macros і з права у вікні Commands, виберіть цей “макрос”. “Ім’я входу”.


Напевно Ви помітили, що автор використовує не русифікований MS Access. Все вище сказане відмінно працює і на російській версії. Але навпаки – не завжди. Якщо Ви напишіть на подію “On Click” – [Event Procedure] – це буде працювати скрізь, але якщо [Процедура обробки подій] (чи як там воно пишеться не можу перевірити) – на оригінальному MS Access видасть повідомлення про помилку. Теж стосується і всього вище сказаного: “Can Customize Toolbars”, … Можете замінювати російськими аналогами, але якщо попадеться користувач зі встановленим English MS Access, Ви з подивом виявите, що відсотків 5 програми чому то не працює. Причому дивовижна вибірковість, деякі російські властивості “переводяться” на англійській версії (їх більшість), а деякі ні.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*