Динамічні меню в ms access - затягуємо гайки - програмні продукти

У статті "Використання динамічних меню в 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 введіть назву клавіші, наприклад - для блокування системного Window (вікна БД). У колонці Action виберіть дію. Якщо просто потрібно заблокувати натискання клавіші, то виберіть дію beep - сигнал. При натисканні користувачем на клавішу F11 прозвучить сигнал. Можна вибрати будь-яку дію, наприклад OpenForm і відкривати форму з курсами валют. Задайте всі клавіші, які потрібно заблокувати, введіть дії і збережіть макрос. Одночасні натискання клавіш вводяться так: ^ - Ctrl і F11, + - 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, виберіть цей "макрос". "Ім'я входу".