Замена символа при вводе

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
morkovin
Ветеран
Сообщения: 800
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

Замена символа при вводе

Сообщение morkovin »

Из-за какой-то кривизны в Win10 с раскладкой клавиатуры юзеры не могут ввести символ "@" в поле емайл. Выводится " (двойная кавычка). Язык ввода я переключаю на Latin. ес-сно. После некоторой долбёжки по Shift+Alt и Shift+Ctrl иногда удаётся переключиться на правильную раскладку. Задолбало уже. Хочется сделать автоматическую замену и забыть об этом кошмаре.
З.Ы, Форум перечитал. Но ничего подходящего не нашел.
WBR, morkovin

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4721
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Замена символа при вводе

Сообщение Игорь Столяров »

Ну можно попробовать также, как работает шаблон с подменой десятичной точки …
- Вешаем на поле ALERT для двойной кавычки;
- Перехватываем по PreAlertKey и если раскладка английская - заменяем на "@"

Код: Выделить всё

  ! ВАРИАНТ КОДА ДЛЯ ПОДМЕНЫ ДЕСЯТИЧНОЙ ТОЧКИ - ЗАМЕНИТЬ СИМВОЛЫ НА НУЖНЫЕ !!! 
  If KeyCode() = DecimalKey
    If GetKeyboardLayoutNameA(Loc:TempString).
    if Loc:TempString = '00000419'   ! Если включена русская раскладка
       PressKey(191)
    else
       Press('.')
    end
  end
«V» значит Вендетта !

kreator
✯ Ветеран ✯
Сообщения: 3816
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Замена символа при вводе

Сообщение kreator »

Если это Кларион и поле Entry, то в свойствах поля надо выставить IMM и отслеживать ввод по EVENT:NewSelection. С текстовым полем так не получится. В таймере надо замену делать.
We are hard at work… for you. :)

Аватара пользователя
morkovin
Ветеран
Сообщения: 800
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

Замена символа при вводе

Сообщение morkovin »

kreator писал(а):
18 Июнь 2020, 9:40
Если это Кларион и поле Entry, то в свойствах поля надо выставить IMM и отслеживать ввод по EVENT:NewSelection. С текстовым полем так не получится. В таймере надо замену делать.
Спасибо!!! Вот так сделал на это событие :

Код: Выделить всё

UPDATE(?Loc:Email)
IF INSTRING('"',CLIP(Loc:Email),1,1) >0 THEN
    xReplace(Loc:Email,'"','@')                             !from xFunction set
    CHANGE(?Loc:Email,Loc:Email)
END
Проверил. Работает!
З.Ы. Это надо в FAQ!
WBR, morkovin

kreator
✯ Ветеран ✯
Сообщения: 3816
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Замена символа при вводе

Сообщение kreator »

Во-первых, instring может быть лишнее, достаточно prop:SelStart смотреть. Во-вторых, что тут такого, что нужно в FAQ?
We are hard at work… for you. :)

kreator
✯ Ветеран ✯
Сообщения: 3816
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Замена символа при вводе

Сообщение kreator »

Я бы вот так сделал:

Код: Выделить всё

update(?)
if LOC:TestString[?LOC:TestString{prop:SelStart}-1]='"'
  LOC:TestString[?LOC:TestString{prop:SelStart}-1] = '@'
  change(?LOC:TestString, LOC:TestString)
end
We are hard at work… for you. :)

Ответить