Перейти к содержанию
Fire Monkey от А до Я

Александр Урванцев

Пользователи
  • Постов

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Александр Урванцев

  1. 12 часов назад, RoschinSpb сказал:

    P.S. Отец Русской Демократии оно же функция Ord в коде обработки клавиш не нужны. Key сравниваете с константой vkXXX, KeyChar c буквой в апострофах, или #32 (решетка + код символа).

    Да и кстати, для мобильных экранных клавиатур такая обработка клавиш работать не будет.

    а на будущее как для мобильных экранных клавиатур поступать?

  2. 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 + пробел
    мне нужно, чтобы реагировало именно на пробел

  3. 27 минут назад, krapotkin сказал:

    блин, для цифробуквенных символов, тех, что отображаются в Edit, ответ в ord(keychar) = 32

    для всех остальных - в Key

    а чтобы узнать нажат ли ctrl, есть shift

    таким образом

    if (keychar = ' ') and (ssCtrl in shift) then

    спасет ОРД.

    У меня onkeydown относится к самой форме, я пишу if Key = 32 then, это правильно?

  4. 13 минут назад, krapotkin сказал:

    информация для размышления

    asdf<пробел>fgt<F1><F2><F3>

    QIP Shot - Screen 091.png

    ну так я про это и говорю
    почему 0 у пробела, когда должно быть 32?
    а если нажать сначала ctrl и удерживая его нажать пробел, то у меня key будет равняться сначала 17 потому что нажат ctrl, а потом 32

    я поднимаю проблему, чтобы понять как сделать так, чтобы программа правильно фиксировала нажатие пробела

  5. Здравствуйте, извините если не туда пишу, первый раз здесь
    Проблема такая, пишется прога в Multi-Device Application
    сделал обработчик нажатия на пробел, запускаю на винде, просто на нажатие на пробел не реагирует, если нажать ctrl + пробел, то приложение реагирует на пробел
    также при проверке вообще на нажатия на клавиатуру и вывод Key, выводит Key только у alt, shift, F1 и тд, ctrl и некоторых других системных клавишь, в остальных случаях выводит 0
    как это исправить?
    извините если криво написал

×
×
  • Создать...