|
|
|||||||||||||||||||||||||||||
|
Динамические меню в MS Access - затягиваем гайкиИсточник: s-2info
В статье "Использование динамических меню в Access" рассматривалось, как создать меню на основе панели инструментов. Пришло несколько писем с вопросами. Как скрыть системное меню? Как запретить пользователям выполнять настройку такого меню самостоятельно? Как перехватывать нажатия специальных клавиш, позволяющих отображать системное меню, окно базы данных и другие, и блокировать стандартные действия по ним или назначать свои действия. Данный код, позволяет отключить системное меню MS Access: Dim myMenuBar As CommandBar Следующая строка: 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() и запускать ее в момент инициализации программы. В дополнение к этому можно запретить останавливать запуск autoexec нажатием Shift, это было описано на этом сайте. Меню на основе панели инструментов, может открывать форму, отчет, запрос, макрос. Если надо запускать определенную функцию, то создайте макрос и перечислите там все такие функции с именами (Macro Name). При настройке меню, на такие функции можно ссылаться, выбрав All Macros и с права в окне Commands, выберите этот "макрос"."имя входа". Наверняка Вы заметили, что автор использует не русифицированный MS Access. Все выше сказанное отлично работает и на русской версии. Но наоборот - не всегда. Если Вы напишите на событии "On Click" - [Event Procedure] - это будет работать везде, но если [Процедура обработки событий] (или как там оно пишется не могу проверить) - на оригинальном MS Access выдаст сообщение об ошибке. Тоже касается и всего выше сказанного: "Can Customize Toolbars",... Можете заменять русскими аналогами, но если попадется пользователь с установленным English MS Access, Вы с удивлением обнаружите, что процентов 5 программы почему то не работает. Причем удивительна избирательность, некоторые русские свойства "переводятся" на английской версии (их большинство), а некоторые нет. Ссылки по теме
|
|