Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Маска для ввода e-mail

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

pavel1978

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ДВС, комраден!
1) Delphi 7, требуется в DBEdit сделать маску для ввода "мыла". Стандартный способ корявенький, а именно: при создании маски вида LLL@gmail.com надо обязательно вводить все 3 литеры + не отображаются некоторые буквы 9вводим вручную). Да и если у записи в БД надо другой почтовый сервер указать, что тогда?
 
Вот и требуется нарисовать что-то вроде _@_._, что реагировало бы, скажем, на пробел. Первое нажатие по "эникею" - перескакиваем через пса, второй - через точку, с обязательным лимитом в 3 символа (корневых доменов с 4, 5, ... символами лично я еще не наблюдал).
 
База - мдб, локальная (аксесс), стыкуем ее через АДО, вводим запись через отдельную форму, на основной форме DBGrid (если вдруг надо такие подробности).      
 
2) до кучи, пока писАл, вопрос - как-то ведь можно сделать, чтоб по полям записи курсор перемещался по нажатию клавиши ентер (не помню, где-то в учебнике каком-то было описание такого фокуса).

Всего записей: 149 | Зарегистр. 13-03-2008 | Отправлено: 12:25 18-03-2015
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Если честно до конца так и не понял задачи, но, так скажем интуиция подсказывает:
 

Цитата:
при создании маски вида LLL@gmail.com надо обязательно вводить все 3 литеры + не отображаются некоторые буквы 9вводим вручную)

Ну кроме масочного символа "L" есть же ещё "l", который не требует наличие символа. Про буквы 9вводим вручную - не понял.
 
А вообще дальнейший разбор вопроса не имеет смысла - стандартный maskedit не помощник в этом деле, т.к. жёстко задаёт поля в маске. Так что либо своя реализация, либо смотреть в сторону сторонних решений. С другой стороны, так ли тебе нужен ввод по маске? Может простую валидацию предусмотреть? Риалтаймовую конечно же, тут уже простор для творчества шире, те же регулярки, например.

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 09:10 21-03-2015
pavel1978

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, понял уже, почитал...
Вот думаю, а как вбить следущее: первое нажатие пробела - появляется "@", второе нажатие пробела => "." , после которой можно вбитьь максимум 3 символа. Можете код предложить?
 
 

Цитата:
Может простую валидацию предусмотреть? Риалтаймовую конечно же

 
а вот тут хотелось бы поподробнее, если можно.

Всего записей: 149 | Зарегистр. 13-03-2008 | Отправлено: 11:23 21-03-2015
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вот думаю, а как вбить следущее: первое нажатие пробела - появляется "@", второе нажатие пробела => "." , после которой можно вбитьь максимум 3 символа. Можете код предложить?  

 
Я бы пошёл по следующему пути:  
 
1. Реализовал наследника от TCustomEdit с перегруженным методом KeyPress. Это для вставки символов после нажатия пробела.
2. А валидацию через какой-нибудь Jvcl validator и красиво и по канонам интерфейсов.
 
Но можно конечно и от TCustomMaskEdit унаследоваться, расковырять всю логику работы, вставлять символы и модифицировать маску на лету(для последней фичи про 3 символа), что получится на практике не могу предугадать, так что выбор за тобой
 
Добавлено:
Прошу прощения, конечно же от TDBEdit-a надо наследовать, если на прямую с dataset-ом работаем )
 
Добавлено:
Сейчас подумал, а ведь интересно получается про модификацию маски на лету: задаём маску как:
L@L.LLl. И пока не нажат пробел в первый раз на каждый символ модифицируем след. образом:
Ll(l)@L.LLl, где (l) - в периоде, т.е. добавляя к маске символ перед собакой, таким образом можем вводить сколько угодно текста перед нажатием пробела, после нажатия пробела меняем позицию каретки(edit offset или что-то такое в TCustomMaskEdit-e) и тоже самое делаем после собаки до очередного нажатия пробела.
 
Как то так, но не гарантирую, что такое можно провернуть - не знаю внутренностей maskedit-a.

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 13:29 21-03-2015
pavel1978

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Валидатор нашел\установил, а что там да как, признаться, не знаю. Просветите, а?

Всего записей: 149 | Зарегистр. 13-03-2008 | Отправлено: 21:10 21-03-2015
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pavel1978 в ссылке, что я давал, есть ещё ссылки на 2 поста по работе с валидаторами, там в общих чертах описано что да как Пробуй, с вопросами welcome Попробую помочь, чем смогу, последний раз их юзал года 3 назад, с ходу не помню.

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 22:35 21-03-2015
Ded0k



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pavel1978
Если есть возможность купить/использовать варезные компоненты, поставьте компонент DevExpress cxMaskEdit или cxTextEdit, и задайте маску ввода регулярным выражением, типа такого:

Код:
^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}

Всего записей: 87 | Зарегистр. 02-11-2004 | Отправлено: 13:36 10-04-2015
LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ded0k
старый код)) уже не все доменнные зоны уже укладываются в 6-ть символов.

Код:
[a-z]{2,6}

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 15:34 10-04-2015
Ded0k



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LadyOfWood

Цитата:
старый код)) уже не все доменнные зоны уже укладываются в 6-ть символов.

ну значит
Код:
^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]+


Всего записей: 87 | Зарегистр. 02-11-2004 | Отправлено: 04:45 12-04-2015
ptr73

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а как же русские (не латинские) буквы в e-mail?

Всего записей: 253 | Зарегистр. 03-07-2007 | Отправлено: 11:16 23-04-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Маска для ввода e-mail


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru