Имитация нажатия клавиши
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
Для планшета сделал свою клавиатуру (MK) для поиска товара через локатор, при нажатии моих клавиш на MK с англ. символов все ясно через presskey(), а как быть с имитацией нажатием на МК не с англ. символами (например - русскими)?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Имитация нажатия клавиши
Переключись в русскую раскладку принудительно и отправляй код кнопки на которой русская буква написана.
Вот сборная солянка с форума.
Вот сборная солянка с форума.
Код: Выделить всё
PROGRAM
HKL EQUATE(UNSIGNED)
Latin CSTRING('00000409')
Russian CSTRING('00000419')
loc:Text STRING(200)
INCLUDE('KEYCODES.CLW')
MAP
module('')
GetKeyboardLayout(DWORD),HKL,pascal
GetKeyboardLayoutNameA(*CSTRING),BOOL,pascal,raw
ActivateKeyboardLayout(HKL,UNSIGNED),HKL,pascal
END
SwitchKBD(STRING KBDLayout)
END
Window WINDOW('Russian presskey'),AT(,,299,124),GRAY,FONT('Microsoft Sans Serif',8,,, |
CHARSET:CYRILLIC)
TEXT,AT(3,2,293,100),USE(loc:Text)
BUTTON('Русский'),AT(2,107),USE(?Rus)
BUTTON('Английский'),AT(45,107),USE(?Eng)
END
CODE
OPEN(Window)
ACCEPT
CASE ACCEPTED()
OF ?Rus
SwitchKBD(Russian)
SELECT(?loc:Text)
PRESSKEY(AKey)
PRESSKEY(BKey)
PRESSKEY(CKey)
OF ?Eng
SwitchKBD(Latin)
SELECT(?loc:Text)
PRESSKEY(AKey)
PRESSKEY(BKey)
PRESSKEY(CKey)
END
END
CLOSE(Window)
SwitchKBD Procedure(STRING KBDLayout)
AKL HKL
TMP CSTRING(20)
loc:i Long
Code
loc:i = GetKeyboardLayoutNameA(Tmp)
if Tmp<>KBDLayout
AKL = ActivateKeyBoardLayout(1,0)
end
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
Спасибо, Admin.
А то я по старинке через API keybd_event(Key,0,0,0) + раскладка LoadKeyboardLayout(), ждал другое решение.
А то я по старинке через API keybd_event(Key,0,0,0) + раскладка LoadKeyboardLayout(), ждал другое решение.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 4960
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 19 раз
Имитация нажатия клавиши
Я только не понял - зачем нужна имитация? И чем не устраивает стандартная клавиатура?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
Более рациональное расположение клавиш, убрано лишнее и терминальный сервер как правило с двумя раскладками языка, а если надо больше, то зачем на сервер навешивать. Плюс можно рассчитать рабочую поверхность, без клавиатуры, которая в зависимости от размера экрана может что -то закрыть и прочее...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
Проблема. При нажатии 123 на виртуал. клавиатуре (выше указанной) в ЧИСЛОВОЕ (LONG) поле, результатом будет только последнее число 3. Идет перезапись нажатых чисел, если использовать обычную клавиатуру таких проблем нет.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Имитация нажатия клавиши
В моем примере сделал поле @N10 с LONG переменной и не увидел проблемы. Все записалось как нужно.
Твоего кода - не видим
При SELECT(?var) все введенное же выделяется.
Может SELECT(?var) несколько раз делаешь и соответственно перезаписываешь только что введенные цифры?
Так попробовать:
Твоего кода - не видим
При SELECT(?var) все введенное же выделяется.
Может SELECT(?var) несколько раз делаешь и соответственно перезаписываешь только что введенные цифры?
Так попробовать:
Код: Выделить всё
SELECT(?LOC:Long)
PRESSKEY(RightKey)
PRESSKEY(Key1)
PRESSKEY(Key2)
PRESSKEY(Key3)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
SELECT(?var) - у меня не работает
PRESSKEY(RightKey) - все заработало!
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 4960
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 19 раз
Имитация нажатия клавиши
По сравнению с сенсорной клавиатурой Винды? Тогда молчу. А подсказки слов при наборе букв есть?gopstop2007 писал(а): ↑11 Июль 2017, 13:07 Более рациональное расположение клавиш, убрано лишнее и терминальный сервер как правило с двумя раскладками языка, а если надо больше, то зачем на сервер навешивать. Плюс можно рассчитать рабочую поверхность, без клавиатуры, которая в зависимости от размера экрана может что -то закрыть и прочее...
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
kreator, я рад всем вашим замечаниям, опыта в кларион с планшетом ноль. Вот такой вид на данном этапе
а какую клавиатуру используете? вызов через клашу с помощью osk (EnhancedFocusManager.SetOnScreenKeyboard) или что-то другое?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 4960
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 19 раз
Имитация нажатия клавиши
Ну да, стандартную. Класс SV чуть подправил. Сделал глобальную настройку на вызов сенсорной клавиатуры ("не вызывать никогда", "вызывать" и "вызывать и автоматически скрывать", последний режим не реализован у SV совсем, спасибо Игорю Столярову, он подсказал как убирать клаву). На данный момент нет отдельной версии для планшета. Есть спец-модуль. В принципе пользователь сам решает как ему использовать сенсорную клавиатуру. Потому что пользователи могут запустить обычный (не мобильный) модуль и использовать обычную "железячную" клаву, идущую в комплекте с планшетом. Для полноценной работы с специальным мобильным модулем, естественно, советуем включать третий режим. Кстати, SV обещала сделать автоматический сдвиг контролов при работе с сенсорной клавиатурой, если она перекрывает контролы для ввода. Ну это так, мало ли чего обещают, пять лет не дождёшься.
Есть ещё проблема - отображение подсказок слов (почему я и спрашиваю об этом). Проблема мне вообще не понятна. MS включила эту возможность в последнем релизе. У майкрософтовских программ эта фича работает. Больше нигде не работает. Ладно, я дурак. А остальные? На форуме Майкрософта мне не помогли. На sql.ru тоже. Очередной пипец. Поэтому я и говорю, что iOS - наше всё. Подсказки работают во всех программах через стандартную клаву, там же есть голосовой ввод. Эх-х...
Есть ещё проблема - отображение подсказок слов (почему я и спрашиваю об этом). Проблема мне вообще не понятна. MS включила эту возможность в последнем релизе. У майкрософтовских программ эта фича работает. Больше нигде не работает. Ладно, я дурак. А остальные? На форуме Майкрософта мне не помогли. На sql.ru тоже. Очередной пипец. Поэтому я и говорю, что iOS - наше всё. Подсказки работают во всех программах через стандартную клаву, там же есть голосовой ввод. Эх-х...
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
Освободился решил доделать,
При поиске все работает идеально, но возникли проблемы, если вышеуказанную клавиатуру использовать в числовых полях, например количество, цена
Использую
при удалении последнего введенного символа в числовом поле
при нажатии клавиши Backspaceповедение неадекватное
не говорю про ввод в поле использующее числовые значения с десятичными значениями (цена)
есть ли у кого то примерчик, чтобы полностью имитировал нажатие стандартных клавиш без использования PRESSKEY()?
При поиске все работает идеально, но возникли проблемы, если вышеуказанную клавиатуру использовать в числовых полях, например количество, цена
Использую
Код: Выделить всё
PRESSKEY(RightKey) ! перемещаем вправо для введение следующего числа
PRESSKEY(Key1)
при нажатии клавиши Backspace
Код: Выделить всё
PRESSKEY(BSKEY)
не говорю про ввод в поле использующее числовые значения с десятичными значениями (цена)
есть ли у кого то примерчик, чтобы полностью имитировал нажатие стандартных клавиш без использования PRESSKEY()?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 4960
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 19 раз
Имитация нажатия клавиши
Ну попробуй функцию press ещё. Может всё-таки стандартную подключить?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Имитация нажатия клавиши
спасибо насчет press упустил, насчет стандартной я не против, баба с возу кобыле легче, клиент считает по другому
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 4960
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 19 раз
Имитация нажатия клавиши
Как понять? Клиент хочет именно "свою" клавиатуру? Или чем-то стандартная не устраивает?gopstop2007 писал(а): ↑13 Сентябрь 2017, 16:02 насчет стандартной я не против, баба с возу кобыле легче, клиент считает по другому
We are hard at work… for you.