|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Подавление нажатия Alt для TMenu
Здравствуйте, форумчане!
В своей программе я реализовал механизм пользовательских горячих клавиш на разные типовые действия. В настройках для каждого такого действия задаётся сама клавиша, плюс, возможно, модификаторы (Alt, Ctrl, Shift). С двумя последними проблем нет, а вот нажатие Alt тут же перехватывается главным меню формы, и в результате: - если клавиатурная комбинация соответствует вызову какого-либо пункта меню, одновременно вываливается это меню, и срабатывает код горячей клавиши. - в противном случае просто срабатывает горячая клавиша, но с системным "бипом" - мол, ошибка тут у вас. Обе эти ситуации меня не радуют, хотелось бы исправить этот момент. Но никак не получается перехватить и подавить нажатие Alt - такое ощущение, что меню перехватывает коды клавиш до того, как их перехватывает форма, компонент ApplicationEvents и метод OnHook. Отследить факт нажатия Alt я могу (в частности, это делают мои обработчики OnKeyDown с целю отследить появление горячих комбинаций), но вот подавить его - никак. Либо давится всё и нет вообще реакции на клавиатуру, либо Alt обязательно добирается до главного меню, вызывая нежелательные действия. Может кто-нибудь сталкивался и знает, как побороть всемогущий Alt? Проблема точно решаемая, во многих приложениях это делается, но моей квалификации никак не хватает, чтобы найти ответ самостоятельно. Сколько ни гуглил - всё вокруг да около, реально действующего кода так и не увидел... Последний раз редактировалось Guaho, 04.04.2020 в 21:38. |