|
v7: Ввод Email адреса в любой раскладке и регистре. | ☑ | ||
---|---|---|---|---|
0
BalBess
06.03.17
✎
08:52
|
Всем здрасте!
Встала задача (в связи с 54-ФЗ) ввода email адреса клиента. Проблема заключается, чтобы кассир вводил адрес в любой раскладке: англ, русской. И в любом регистре. Т.е. при нажатии например Й (русс, большая) в поле вводилось q (анг, маленькое). Все недопустимые символы - игнорировались. Может кто делал подобное.. поделитесь мыслями |
|||
1
BalBess
06.03.17
✎
08:52
|
есс-но без внешних компонент (кроме FormEx'а)
|
|||
2
FIXXXL
06.03.17
✎
08:53
|
(0) прогони итоговую строку через замену русских букв на латинские
|
|||
3
пипец
06.03.17
✎
08:54
|
||||
4
BalBess
06.03.17
✎
08:54
|
(2) не, нужно чтобы кассир забивал адрес, и сразу видел англ буквы. Да и как сделать эту замену?
|
|||
5
FIXXXL
06.03.17
✎
08:56
|
(4) при начале редактирования раскладку смени
|
|||
6
BalBess
06.03.17
✎
08:57
|
(3) да, грубо говоря нужен пунтосвичер для 77 (программный и принудительный) - т.е. всегда переводить в англ
|
|||
7
BalBess
06.03.17
✎
08:59
|
(5) - дельный совет, но хотелось-бы чтобы кассир не заморачивался раскладкой, а сразу вводил адрес. И заодно отсеивать ненужные символы
|
|||
8
Это_mike
06.03.17
✎
09:00
|
ну так формексом и меняй
|
|||
9
Это_mike
06.03.17
✎
09:00
|
точнее, формексом лови, и если надо - меняй
|
|||
10
BalBess
06.03.17
✎
09:05
|
(9) это я задним умом понимаю, вопрос как менять? Тупо перебором? нарыл таблицы замены
Lat = "~@#$^&QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?`qwertyuiop[]asdfghjkl;"\zxcvbnm,./"; Cyr = "Ё"№;:?ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,ёйцукенгшщзхъфывапролджэ\ячсмитьбю."; тока не знаю что с этим "счастьем" делать.. |
|||
11
Это_mike
06.03.17
✎
09:07
|
(10) ну тогда в среднюю общеобразовательную...
Сред(***,найти(**),1) |
|||
12
FIXXXL
06.03.17
✎
09:08
|
(7) я семерку не знаю от слова совсем
определить НачалоРедактирования нужно поля можешь? проверить в этот момент раскладку может Формекс? сменить раскладку может? |
|||
13
FIXXXL
06.03.17
✎
09:08
|
*нужного
|
|||
14
FIXXXL
06.03.17
✎
09:10
|
(12) если поля не можешь, сделай форму ввода адреса, в которой при открытии всё и задавай
|
|||
15
aka AMIGO
06.03.17
✎
09:31
|
Можно намекнуть кассиру изредка посматривать на то, что он вводит.
ЗЫ. Автора можно понять.. © кассир - женщина, у них 3 заботы: ККК В ЗиК дама заменила первую букву фамилии, на лат.раскладке напечатала "A" Всердцах звонит мне: "У вас тут не работает (это нет поиска по фио в списке справочника). Исправьте, чтоб тут работало!" Спрашиваю: ввели на лат.раскладке? Отвечает: А какая разница? Объясняю разницу, в ответ скептическая физиономия, и комментарий: "Напридумывают черт-те что.." |
|||
16
Это_mike
06.03.17
✎
09:33
|
(15) ну, а если вводят пол "по соглашению сторон", а потом орут, что не работает? :-)
волосы-то перекрасить можно, но если дура - то это навсегда... |
|||
17
BalBess
06.03.17
✎
11:03
|
Оказалось формексу без разницы какая сейчас раскладка и какой регистр. Он передает код клавиши одинаковый в любой раскладке.
В общем сделал так (может кому пригодиться), пропускаем только нужные символы Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, прм_Alt, прм_Shift, прм_Ctrl, прм_Символ, прм_ФСО) Если прм_ФСО = 0 тогда Возврат; КонецЕсли;//легкий антидубль - формекс иногда подглючивает прм_ФСО=0; Если КодКлавиши = 13 Тогда // Enter Форма.Закрыть(0); Возврат; КонецЕсли; Если (КодКлавиши = 27) Тогда //Escape Форма.Закрыть(0); Возврат; КонецЕсли; Если КодКлавиши = 8 Тогда // Backspace длин = стрДлина(Email); Если длин <=0 Тогда Возврат; КонецЕсли; Email = Лев(Email, длин - 1); ПоказEmail(); Возврат; КонецЕсли; Если КодКлавиши = 46 Тогда // Delete Email = ""; ПоказEmail(); Возврат; КонецЕсли; Если стрДлина(Email) > 50 Тогда Возврат; КонецЕсли; // собака Если (КодКлавиши = 50) И (прм_Shift = 1) Тогда // @ - собака (50) Email = "" + Email + "@"; ПоказEmail(); Возврат; КонецЕсли; // буквы Если (КодКлавиши > 64) и (КодКлавиши < 91) Тогда Email = "" + Email + Симв(КодКлавиши + 32); ПоказEmail(); Возврат; КонецЕсли; // цифры Если (КодКлавиши > 47) И (КодКлавиши < 58) Тогда Email = "" + Email + Симв(КодКлавиши); ПоказEmail(); Возврат; КонецЕсли; // цифры NumPad Если (КодКлавиши > 95) И (КодКлавиши < 106) Тогда Email = "" + Email + Симв(КодКлавиши - 48); ПоказEmail(); Возврат; КонецЕсли; // точка Если (КодКлавиши = 110) ИЛИ (КодКлавиши = 190) ИЛИ (КодКлавиши = 191) Тогда Email = "" + Email + "."; ПоказEmail(); Возврат; КонецЕсли; // нижнее подчеркивание Если (КодКлавиши = 189) И (прм_Shift = 1) Тогда Email = "" + Email + "_"; ПоказEmail(); Возврат; КонецЕсли; // тире Если (КодКлавиши = 109) ИЛИ (КодКлавиши = 189) Тогда Email = "" + Email + "-"; ПоказEmail(); Возврат; КонецЕсли; КонецПроцедуры //*************************************************************** |
|||
18
BalBess
06.03.17
✎
11:07
|
Да, критика, ошибки приветствуются )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |