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

Вниз

Как определить текущий регистр клавиатуры: русский или английский   Найти похожие ветки 

 
Владимир2   (2002-04-23 14:21) [0]

Из программы.
Это нужно для того,чтобы в отклике "OnKeyDown" определить символ нажатой совместно с ALT или CTRL клавиши. Как сделать это напрямую никто и нигде мне подсказать не смог.
Надежда получить конкретный ответ на мой вопрос мала, но всё-же ...


 
Song   (2002-04-23 14:50) [1]

GetKeyboardLayout()
GetKeyboardLayoutName()


 
PaRL   (2002-04-23 14:51) [2]


> Надежда получить конкретный ответ на мой вопрос мала, но
> всё-же ...

Вы хоть FAQ иногда смотрите?


 
Владимир2   (2002-04-23 18:35) [3]

Большое спасибо Song и PaRL за отклик. Ответ на этот мой вопрос я получил.
А есть ли более простой способ в "OnKeyDown" определить символ нажатой совместно с ALT или CTRL клавиши? Т.е. мне нужно в символьную переменную получить символ "U" или "Г", в зависимости от раскладки, если нажаты клавиши (ALT или CTRL)+(U).
Спасибо.


 
Cobalt   (2002-04-23 18:54) [4]

А там (в OnKeyDown) кажется есть такой параметр sShiftState - там хранятся состояния Ctrl, Alt и Shift. А в Key - сам символ.


 
Malder   (2002-04-23 18:57) [5]

Используй событие OnKeyPress. Там передается var Key: Char то есть именно символ Char. Если раскладка русская, то при нажатии на "i" Key будет равен "ш"


 
Malder   (2002-04-23 19:11) [6]

Cobalt, нет. В событии OnKeyDown передается виртуальый код нажатой клавиши - и он не различает кодировок.
Поэтому нужно использовать OnKeyPress, но тоже проблема. В это событие не передается параметр Shift. То есть, не определишь нажат Alt, Ctrl иил нет...


 
Malder   (2002-04-23 19:12) [7]

Cobalt, нет. В событии OnKeyDown передается виртуальый код нажатой клавиши - и он не различает кодировок.
Поэтому нужно использовать OnKeyPress, но тоже проблема. В это событие не передается параметр Shift. То есть, не определишь нажат Alt, Ctrl или нет...


 
Song   (2002-04-23 21:06) [8]

2Malder © (23.04.02 19:12), Владимир2 (23.04.02 18:35)
Для опредедения Shift"а, а также любых других клавиш можно использовать в onKeyPress GetKeyboardState() или GetAsyncKeyState()


 
Владимир2   (2002-04-23 21:33) [9]

В том-то и дело, уважаемые коллеги, что OnKeyDown даёт один и тот же символ при разной раскладке, а OnKeyPress даёт правильный символ только, если нет Shift"а: если ALT, то в него совсем не попадаешь (это понятно), а если CTRL, то при любой раскладке будет одинаковый непонятный символ.
Поэтому вопрос не так прост, как казался вначале.
Спасибо всем.




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

Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.048 c
6-17660
Morozik
2002-02-18 12:57
2002.05.06
Winsock


1-17518
PaRL
2002-04-23 14:55
2002.05.06
TChart(не заню в который раз :) )


3-17487
62mkv
2002-04-11 15:58
2002.05.06
Левые пустые страницы в отчете - как убрать ?


3-17481
yyy
2002-04-12 12:58
2002.05.06
Можно как-либо вставить в бд поля её типа?


1-17590
ProfiUgl
2002-04-22 16:37
2002.05.06
Конкрентый вопрос по программированию.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский