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

Вниз

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

 
Владимир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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-17616
Ziv
2002-04-22 19:10
2002.05.06
Нужен компонент типа Excel


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


1-17621
allrussia
2002-04-22 21:03
2002.05.06
Доброго времени суток, знатоки. Не подскажете ли ламеру ответ на


3-17501
Filat
2002-04-12 15:44
2002.05.06
Не стартует 7.0? Ошибка 1069 !!! Что делать?


14-17679
vajo
2002-03-22 13:51
2002.05.06
Безопасность W2000