Александр Урванцев
-
Постов
10 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Александр Урванцев
-
-
Всем спасибо, немного разобрался
-
5 часов назад, RoschinSpb сказал:
См. документацию источник знаний: KeyDown или TKeyEvent.
Key это скан код клавиши приведенный к виртуальным кодам клавиш windows. Это значение получается когда нажато некоторое сочетание клавиш к примеру Ctrl+<пробел>, такие нажатия последовательно передаются всем контролам, пока один из них не обработает его и не сбросит в 0. За некоторыми исключениями эти значения определяются физическим расположением клавиш, т. е. английская клавиша <A> будет всегда располагаться приблизительно в одном и том же месте и на Mac и на Win и в России и в Гондурасе.
Keychar это введенная буква. Т.е. обычная буква которая вводится при наборе текста зависит от платформы, языка, выбранной раскладки способа ввода и прочих параметров. Такие нажатия передаются только фокусному контролу.
Так что для Ctrl+<пробел> надо использовать проверку if (Key = vkSpace) and (ssCtrl in shift).
Для проверки нажатия Ctrl+Ф надо использовать проверку if (Key = vkA) and (ssCtrl in shift) и ни каких Key = Ord('Ф') потому, что неизвестно какая на этом месте будет буква на каком-нибудь Mac из Японии. И более тогоKey = Ord('Ф') = $D4 - это зарезервированный код клавиши
Key = Ord('ф') = $F4 - это VK_OEM_ENLW (Only used by Nokia)
Key = Ord('a') = $61 - это vkNumpad1 (1 key numeric keypad)
Но проще было бы создать действие (см. TActionList и TAction), назначить на него ShortCut выбрав одно из рекомендованных значений.мне не нужно ctrl + пробел
мне нужно, чтобы реагировало именно на пробел -
6 часов назад, krapotkin сказал:
нет в данном случае ОРД это отец русской демократии )))
я же написал код, что еще?if (keychar = ' ') then
не работает
-
6 часов назад, Maximus сказал:
if ord(KeyChar) = vkSpace then
не работает
-
27 минут назад, krapotkin сказал:
блин, для цифробуквенных символов, тех, что отображаются в Edit, ответ в ord(keychar) = 32
для всех остальных - в Key
а чтобы узнать нажат ли ctrl, есть shift
таким образом
if (keychar = ' ') and (ssCtrl in shift) then
спасет ОРД.
У меня onkeydown относится к самой форме, я пишу if Key = 32 then, это правильно?
-
13 минут назад, krapotkin сказал:
ну так я про это и говорю
почему 0 у пробела, когда должно быть 32?
а если нажать сначала ctrl и удерживая его нажать пробел, то у меня key будет равняться сначала 17 потому что нажат ctrl, а потом 32я поднимаю проблему, чтобы понять как сделать так, чтобы программа правильно фиксировала нажатие пробела
-
17 минут назад, krapotkin сказал:
что такое
?
ну я имею в виду функцию onkeydown
-
Здравствуйте, извините если не туда пишу, первый раз здесь
Проблема такая, пишется прога в Multi-Device Application
сделал обработчик нажатия на пробел, запускаю на винде, просто на нажатие на пробел не реагирует, если нажать ctrl + пробел, то приложение реагирует на пробел
также при проверке вообще на нажатия на клавиатуру и вывод Key, выводит Key только у alt, shift, F1 и тд, ctrl и некоторых других системных клавишь, в остальных случаях выводит 0
как это исправить?
извините если криво написал
Обработка клавиатуры
в Компоненты
Опубликовано
а на будущее как для мобильных экранных клавиатур поступать?