|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.12.2012, 16:21 | #1 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Получить символ из кода нажатой клавиши (WM_KEYDOWN)
У формы есть событие OnKeyPress, которое передает символ нажатой клавиши (var Key:Char)
Я пишу свой контрол, в котором получаю и обрабатываю сообщение WM_KEYDOWN. Из этого сообщения мне известны: CharCode: Word; // код нажатой клавиши KeyData: Longint; // TShiftState Как теперь получить непосредственно символ, который напечатался бы в текстовом поле? т.е. если я нажимаю клавишу S, с русской раскладкой и нажатым шифтом, то символ - 'Ы'. Спасибо =) |
23.12.2012, 16:36 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
По таблице.
Иначе никак. Собственно, именно эту таблицу обычно и называют "раскладкой клавиатуры". |
23.12.2012, 16:48 | #3 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,152
|
Ты не поверишь...
CharCode уже и есть твой искомый печатаемый символ. В utf16, ессно. |
23.12.2012, 17:10 | #4 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Smogg, ой не врите =)
Клавиша Q всегда имеет CharCode = 81, независимо от раскладки и нажатых шифтов. s-andriano, а подробнее? руками то я и сам могу - расписать каждую клавишу "если-то или если-то"... но полюбому есть уже готовая функция для получения символа. вот мне ее и надо. как раз тот случай, когда я не хочу изобретать велосипед. |
23.12.2012, 17:20 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
I'm learning to live...
|
|
23.12.2012, 17:24 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
23.12.2012, 18:54 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,493
|
|
23.12.2012, 20:39 | #8 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
23.12.2012, 21:03 | #9 | |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,152
|
Цитата:
Языковые настройки - это что-то с чем-то. И без крайней нужды напрямую с ними лучше не связываться. |
|
25.12.2012, 13:42 | #10 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Охохо, бинго!
waleri, это то что надо! )) я просто не знал что есть такое событие. OnKeyPress на форме возникает, наверно именно с него, а я думал с WM_KEYDOWN. MapVirtualKeyEx курил, но что-то там слишком мудрено, не хочу в это все вникать. всем спасибо за участие =) p.s. ах да, Smogg, я, наверное дилетант, я пока с помощью procedure MouseMove(var Message: TWMMouse); message WM_MOUSEMOVE; все делаю... не совсем api, наверное... |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получить код нажатой клавиши на картинке | Григоренко Степан | Компоненты Delphi | 8 | 27.11.2012 01:43 |
asm получить код нажатой клавиши... (?) | Denutrror | Общие вопросы Delphi | 15 | 31.03.2012 16:19 |
Получения кода нажатой клавиши | _PROGRAMM_ | Win Api | 8 | 11.02.2012 22:56 |
Определение кода нажатой клавиши | Fataller | Общие вопросы C/C++ | 8 | 07.11.2009 19:29 |
код нажатой клавиши | galaid | Общие вопросы Delphi | 4 | 24.05.2009 20:03 |