Вход


Главная страница >> Учебный процесс >> Конспекты >> Delphi. Библиотека визуальных компонентов VCL >> Описание компонентов VCL >> Ввод и ред. Общие вопросы >> Ввод и ред. TMaskEdit
Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


Ввод и ред. TMaskEdit


TObject => TPersistent => TConiponent => TControl => TWinControl => TCustomEdit => TCustomMaskEdit => TMaskEdit
Модуль MASK
Страница Палитры компонентов Additional

Этот специальный редактор допускает лишь ввод текста, соответствующего заданному программистом шаблону, например, паролей, регистрационных номеров, дат и других данных, которые имеют определенный формат представления.

Шаблон ввода в виде строки содержится в свойстве:

(Pb) property EditMask: string;

Если он не определен, TMaskEdit работает как обычный редактор. Свойство

(Ro) property IsMasked: Boolean;

показывает, определен ли шаблон редактирования (значение EditMask не равно пустой строке).

"Черновой" текст, содержащий введенные пользователем символы, соответствует свойству:

property EditText: string;

В то же время отформатированный (наложенный на шаблон) текст содержится в свойстве Text.

Опишем правила, применяемые при составлении шаблона. Шаблон состоит из трех частей, разделяемых символом ';' или другим, заменяющим его. Первая часть является обязательной ? она определяет собственно маску ввода. Каждому символу в поле ввода редактора соответствует специальный символ в маске, определяющий, что можно ввести на этом месте.

Описатели маски ввода представлены в таблице:

Символ маски Означает, что на этом месте во вводимом тексте...
L Должна быть буква (A-Z, a-z, А-Я, а-я).
I Может быть буква.
А Должен быть буквенно-цифровой символ.
А Может быть буквенно-цифровой символ.
С Должен быть любой символ ASCII.
с Может быть любой символ ASCII.
0 Должна быть любая цифра.
9 Может быть любая цифра.
# может быть любая цифра или знаки '+', '-'.

"Должен" означает, что пользователь обязан ввести в поле соответствующий символ, "может" ? что не обязан. Например, шаблон "LL00" обязывает пользователя ввести пароль из двух букв и двух цифр, a "LL99" ? из двух букв и не более двух цифр.

Кроме описателей полей ввода, в шаблоне могут быть литералы и другие форматирующие символы.

Литералами будем называть символы, которые появляются при отображении строки ввода, но не могут изменяться пользователем и предназначены только для ее оформления. Перед литералом должен стоять символ '\'. Типичный пример ? ввод телефонных номеров. Для семизначного номера с возможностью ввода междугороднего кода нужен шаблон "!\(999\)000-0000;1;_". Тогда код города (если он есть) в отформатированном тексте будет заключен в скобки.

Специальные символы приведены в следующей таблице:

Символ Значение
\ Символ, непосредственно предшествующий литералу.
: Разделитель для часов, минут и секунд при вводе времени.
/ Разделитель для дней, месяцев и лет при вводе даты.
; Разделитель полей в маске.
! Символ определяет подавление пробелов: если он есть в маске (в любом месте), в выходном тексте подавляются пробелы перед текстом; в противном случае ? идущие после текста.
> Символ, после которого все вводимые буквы преобразуются к верхнему регистру.
< Символ, после которого все вводимые буквы преобразуются к нижнему регистру.
<> После этой пары символов преобразование регистров отменяется.
- Пустое поле при вводе (отображается как пробел). Курсор не будет останавливаться в этой позиции.

Вторая часть шаблона ? это символ '0' или '!', определяющий, записываются ли литералы в обработанный текст (свойство Text). При 0 символы опускаются. Использование такого компонента при работе с базами данных дает возможность экономии места.

Например, пользователь ввел цифры 1234567. Тогда при действующем шаблоне "999\-99\-00;1;_" свойство Text будет равно "123-45-67", а для шаблона "999\-99\-00;0;_" - "1234567".

Третья часть содержит символ, который будет показываться в полях, предназначенных для ввода. Например, шаблон для ввода номеров машин "L 00\-00 LL;1;X" будет выглядеть как "X═ХХ-ХХ XX". По умолчанию этот символ определяется значением константы DefaultBlank(cм. ниже).

Вторая и третья части шаблона могут отсутствовать.

Синтаксис шаблона может быть изменен за счет переопределения программистом специальных символов '_', ';' и '0'. Для этого нужно изменить определенные в модуле Mask константы:

Const
═════DefaultBlank: Char - '_';
═════MaskFieldSeparator: Char = ';';
═════MaskNoSave: Char = '0';

Для ввода шаблонов в Delphi есть довольно удобный специальный редактор, содержащий некоторые полезные образцы. К сожалению, в этой версии в нем есть ошибка ? при вводе маски он не всегда сразу воспринимает введенные изменения. В этом случае еще раз компилируйте создаваемое приложение.

Непосредственную проверку введенного текста осуществляет метод:

procedure ValidateEdit;

Он обычно вызывается при нажатии кнопки Default в модальной форме и при каждой утере фокуса редактором. При отсутствии введенных символов в тех местах, где они необходимы, возникает исключительная ситуация EDBEditEiror.

Метод

function GetTextLen: Integer;

возвращает длину текста Text.



[Назад]    [Содержание ]    [Вперед]

  


Для комментария : kadan@grsu.grodno.by

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017