Страница 1 из 1

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 14:36
kreator
Можно ли при вводе в поле (естественно, String) программно запретить менять раскладку клавиатуры. В поле нужен строго английский язык. Как его выставить - не проблема. Но, вдруг, пользователь раскладку сам поменяет. Или надёжнее проводить анализ строки после ввода?

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 15:47
Игорь Столяров
Можно попробовать повесить на поле ALERT(192,255) и через Pre-Alert Key забанить ввод русских символов ....

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 16:01
kreator
Игорь Столяров писал(а): 07 Февраль 2018, 15:47 Можно попробовать повесить на поле ALERT(192,255) и через Pre-Alert Key забанить ввод русских символов ....
Похоже, так не пойдёт. Поле заполняется через считыватель магнитных карт. Могу на что-то среагировать только после получения Enter'а, Enter генерит сам считыватель. А есть доступный (простой) способ хотя кириллицу перевести на латиницу? Уже в ведённой строке. Может функция?

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 16:05
Игорь Столяров
kreator писал(а): 07 Февраль 2018, 16:01Поле заполняется через считыватель магнитных карт.
Не понял. "Заполняется через считыватель" - это так называется передача через буфер клавиатуры ?
Тогда все клавиатурные события есстественно будут работать ....

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 16:59
Admin
При выборе поля принудительно выбери английский язык. Что бы при считывании заведомо на английском вывелся текст,
и после ввода, функцией типа простой транслитерации, конвертни русский в английский (на всякий случай)

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 17:47
kreator
Игорь Столяров писал(а): 07 Февраль 2018, 16:05 Тогда все клавиатурные события есстественно будут работать ....
Теперь я уже не понял. Если я в поле ENTRY делаю операцию вставить (Ctrl+V), алерты отработают? С другой стороны, если из 10 символов 4 кириллических, и они не считались, а 6 считалось, делать доп. проверку на количество введённых символов? Не вариант. В общем случае я не знаю этого количества.
Admin писал(а): 07 Февраль 2018, 16:59 При выборе поля принудительно выбери английский язык.
Ну да. Поставил. Написал примечание, на всякий случай, что раскладка должна быть латинской.
Admin писал(а): 07 Февраль 2018, 16:59 функцией типа простой транслитерации, конвертни русский в английский (на всякий случай)
Что за функция? Есть что-то в Кларионе или ВинАПИ? Как раз транслитерация-то и нужна. В принципе мне нужно обработать шесть букв, соответствующих латинским A-B-C-D-E-F (число в том самом виде). Русские буквы перевести в них несложно. Но вдруг на компе ещё какая-нибудь раскладка? Загоняюсь?

Принудительно запретить менять раскладку клавиатуры

Добавлено: 07 Февраль 2018, 18:12
Игорь Столяров
kreator писал(а): 07 Февраль 2018, 17:47Если я в поле ENTRY делаю операцию вставить (Ctrl+V), алерты отработают
Если у Вас данные в поле попадают через ClipBoard Windows, то контроль клавиатурного ввода работать не будет.
А вот если сканер выталкивает код в буфер клавиатуры, то контроль по символам работать будет.

Принудительно запретить менять раскладку клавиатуры

Добавлено: 08 Февраль 2018, 9:54
kreator
Игорь Столяров писал(а): 07 Февраль 2018, 18:12 А вот если сканер выталкивает код в буфер клавиатуры, то контроль по символам работать будет.
К сожалению, сейчас проверить не могу. Считыватель у заказчика. Но интересно было бы знать. Считыватель посылает "1С00В58С3Ф", что на выходе я получу, если забаню кириллицу?

Принудительно запретить менять раскладку клавиатуры

Добавлено: 08 Февраль 2018, 10:29
Игорь Столяров
Тоже самое, что если бы вводили эту строку с клавиатуры: 1С00В58С3 (предполагаю, что "B" и "С" - английские).
Здесь главный вопрос в том, хотите Вы получить только английские символы при считывании XЗ чего, или блокировать
считывание кода с недопустимыми символами (с выдачей сообщения, сбросом считывания и т.д.) ....

Принудительно запретить менять раскладку клавиатуры

Добавлено: 08 Февраль 2018, 10:56
kreator
Игорь Столяров писал(а): 08 Февраль 2018, 10:29 Тоже самое, что если бы вводили эту строку с клавиатуры: 1С00В58С3 (предполагаю, что "B" и "С" - английские).
Здесь буквы все кириллические. Т.е. на выходе я получу "100583". И что мне с этим делать? Если только сообщение какое-то выдавать. Хочется дать пользователю максимально удобный инструмент. Сделал пока ручную "транслитерацию" кириллицы.

Принудительно запретить менять раскладку клавиатуры

Добавлено: 08 Февраль 2018, 12:02
Admin
Вешаем таймер на окно. Неактивный.
По событию выбора вашего поля ввода включаем таймер.
На таймере постоянно, принудительно, часто ставим английскую раскладку!
При выходе из поля таймер отключаем.
Все!
Ваш аппарат, с офигенно большой вероятностью, выведет в поле вашу строку в английской раскладке.