Главная страница
    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.45 MB
Время: 0.025 c
1-1122638899
bat00n
2005-07-29 16:08
2005.08.21
Генерирование строки


6-1115489058
Ландграф Павел
2005-05-07 22:04
2005.08.21
получить статистику текущего соединения с интернет


14-1122890968
msguns
2005-08-01 14:09
2005.08.21
Горе-то какое..


14-1122561701
Kerk
2005-07-28 18:41
2005.08.21
Скажем "НЕТ!" политике.


1-1123134256
TerminalHead
2005-08-04 09:44
2005.08.21
Горячие клавишы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский