Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Как отловить событие нажатия Ctrl+Alt+<буква>?   Найти похожие ветки 

 
DeVid   (2005-08-02 15:51) [0]

Вопрос состоит в следующем.

На форме имеется некий контрол - VirtualStringTree - сродни обычному TreeView. Необходимо, чтобы при нажатии комбинации Ctrl+Alt+<буква> срабатывало какое-либо событие.

Необходимо заметить, в чём собственно главная проблема. Ясно, что можно такую комбинацию легко перехватить при наступлении события OnKeyDown, в которую передаются параметры Key:Word и Shift:TShiftState. Достаточно сделать проверку:

if (Shift = [ssAlt, ssCtrl]) then
begin
  ...


после чего можно браться за скан код клавиатуры, содержащийся в переменной Key.
Но вот проблема: в переменной Key сканкод - виртуальный. А это значит, что какая бы раскладка клавиатуры ни была, нам всегда будут приходить английские буквы в верхнем регистре.

Вопрос: каким образом можно отловить реальный сканкод нажатой буквы именно той раскладки и регистра клавиатуры, в котором она находится?


 
Аст   (2005-08-02 16:05) [1]

Попробуй THotKey с вкладки Win32 (uses comctrls)
Вроде бы никаких проблем


 
Mx ©   (2005-08-02 16:26) [2]

А если использовать OnKeyPress? Состояние запоминать в OnKeyDown, в OnKeyUp - сбрасывать. А еще есть GetKeyState.


 
DeVid   (2005-08-02 19:39) [3]

To Аст:
На сколько я понимаю, этот компонент просто позволяет юзеру грамотно ввести комбинацию клавиш с тем, чтобы потом её, например, сохранить и использовать для отлова, как это, например, сделано в запуске приложений в Windows (такую комбинацию мы можем определить в ярлыке).

To Mx:
Вариант с OnKeyPress уже пробовал - при нажатии любой комбинации, типа Ctrl+Alt+<буква> это событие вообще не срабатывает - только OnKeyUp/OnKeyDown. :-(


 
TUser ©   (2005-08-02 20:28) [4]

TActionManager ??


 
deamon_t   (2005-08-02 20:33) [5]

Ну, можно узнать раскладку клавиатуры GetKeyboardLayout


 
DeVid   (2005-08-04 13:42) [6]

ОК, даже если я узнал раскладку клавиатуры, ShiftStat"ы, CapsLockState, как мне потом переводить виртуальное код клавиши в код "нажатой буквы"? Таблицы символов для разных раскладок строить? Опять-же, есть подозрение, что подобную функцию можно переложить на ОС.

Может есть какая-нибудь функция, которая переводит виртуальный код клавиши в скан код учитывая текущую раскладку и все ShiftStat"ы или аналогичная ей?

Гуру, подскажите пожалуйста!



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
1-1122919369
-virus-
2005-08-01 22:02
2005.08.21
Иконка в трее


1-1122630609
Aleksandr.
2005-07-29 13:50
2005.08.21
Как правильно удалить TMenuItem?


14-1122309910
YurikGL
2005-07-25 20:45
2005.08.21
Поздравляю!!!


4-1119700531
Nik_vr
2005-06-25 15:55
2005.08.21
Окно в окне (чужом)


3-1120865175
igorek2003
2005-07-09 03:26
2005.08.21
Справочник и Jpeg