Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.04.2020, 21:17
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Подавление нажатия Alt для TMenu

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

Последний раз редактировалось Guaho, 04.04.2020 в 21:38.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter