Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Как отловить событие нажатия 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.075 c
1-1122640151
mazepa
2005-07-29 16:29
2005.08.21
io error 53


1-1122537926
Choovak
2005-07-28 12:05
2005.08.21
Зашифровать файл


1-1122844342
ronyn
2005-08-01 01:12
2005.08.21
Срок работы DEMO


14-1122371868
MBo
2005-07-26 13:57
2005.08.21
Пляшущие человечки наномира ;)


14-1122377821
Knight
2005-07-26 15:37
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский