Замена символа при вводе
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
Замена символа при вводе
Из-за какой-то кривизны в Win10 с раскладкой клавиатуры юзеры не могут ввести символ "@" в поле емайл. Выводится " (двойная кавычка). Язык ввода я переключаю на Latin. ес-сно. После некоторой долбёжки по Shift+Alt и Shift+Ctrl иногда удаётся переключиться на правильную раскладку. Задолбало уже. Хочется сделать автоматическую замену и забыть об этом кошмаре.
З.Ы, Форум перечитал. Но ничего подходящего не нашел.
З.Ы, Форум перечитал. Но ничего подходящего не нашел.
WBR, morkovin
morkovin
- Игорь Столяров
- Ветеран движения
- Сообщения: 8075
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Замена символа при вводе
Ну можно попробовать также, как работает шаблон с подменой десятичной точки …
- Вешаем на поле ALERT для двойной кавычки;
- Перехватываем по PreAlertKey и если раскладка английская - заменяем на "@"
- Вешаем на поле ALERT для двойной кавычки;
- Перехватываем по PreAlertKey и если раскладка английская - заменяем на "@"
Код: Выделить всё
! ВАРИАНТ КОДА ДЛЯ ПОДМЕНЫ ДЕСЯТИЧНОЙ ТОЧКИ - ЗАМЕНИТЬ СИМВОЛЫ НА НУЖНЫЕ !!!
If KeyCode() = DecimalKey
If GetKeyboardLayoutNameA(Loc:TempString).
if Loc:TempString = '00000419' ! Если включена русская раскладка
PressKey(191)
else
Press('.')
end
end
Make Clarion Great Again ! 
Игорь Столяров
-
- ✯ Ветеран ✯
- Сообщения: 5175
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Замена символа при вводе
Если это Кларион и поле Entry, то в свойствах поля надо выставить IMM и отслеживать ввод по EVENT:NewSelection. С текстовым полем так не получится. В таймере надо замену делать.
We are hard at work… for you. 

kreator
- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
Замена символа при вводе
Спасибо!!! Вот так сделал на это событие :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
morkovin
-
- ✯ Ветеран ✯
- Сообщения: 5175
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Замена символа при вводе
Во-первых, instring может быть лишнее, достаточно prop:SelStart смотреть. Во-вторых, что тут такого, что нужно в FAQ?
We are hard at work… for you. 

kreator
-
- ✯ Ветеран ✯
- Сообщения: 5175
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Замена символа при вводе
Я бы вот так сделал:
Код: Выделить всё
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. 

kreator
-
- Бывалый
- Сообщения: 60
- Зарегистрирован: 12 Июнь 2015, 22:59
- Откуда: Новороссийск
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Замена символа при вводе
Подскажите, как в EIP подменить десятичный разделитель на точку для Decimalkey, когда включена русская раскладка
VWV
- Игорь Столяров
- Ветеран движения
- Сообщения: 8075
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Замена символа при вводе
Абсолютно точно также как и для любого другого поля ввода.VWV писал(а): 16 Июнь 2022, 17:21 как в EIP подменить десятичный разделитель на точку для Decimalkey
1. Включаем на нужных EIP полях ALERT по прессу DecimalKey
Код: Выделить всё
EditInPlace::XYZ:MyField.Init PROCEDURE(UNSIGNED FieldNumber,UNSIGNED ListBox,*? UseVar)
...
PARENT.Init(FieldNumber,ListBox,UseVar)
...
Self.FEQ{Prop:Alrt,250} = DecimalKey
Код: Выделить всё
BRW1::EIPManager.TakeFieldEvent PROCEDURE
Loc:TempString CString(21)
...
ReturnValue = PARENT.TakeFieldEvent()
...
If Event() = Event:PreAlertKey
If KeyCode() = DecimalKey
If GetKeyboardLayoutNameA(Loc:TempString).
If Loc:TempString = '00000419' ! Если включена русская раскладка
PressKey(191)
else
Press('.')
end
end
end
! End of "Browse EIP Manager Method Executable Code Section"
RETURN ReturnValue

Make Clarion Great Again ! 
Игорь Столяров
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)