Компонент Delphi MaskEdit (Шаблон ввода) расположен на странице Additional Палитры компонентов. Он также, как и компонент Edit, является однострочным редактором. Но вдобавок к свойствам и функциям компонента Edit, MaskEdit дает дополнительную возможность ввода текста по заданному шаблону.
С помощью шаблона можно контролировать число вводимых символов, ограничить тип вводимых данных (цифры, буквы, служебные символы). Можно добавлять дополнительные символы (разделители при вводе номера телефона, даты, времени и др. С помощью шаблона удобно вводить почтовые индексы, телефоны, даты, то есть такую информацию для которой определен свой формат.
Шаблон (маска) задается с помощью свойства EditMask и состоит из трех полей разделенных между собой символами точка с запятой. В первом поле находиться сам шаблон (маска). Второе поле определяет, войдут ли вспомогательные символы в итоговый текст (по умолчанию 1). Если стоит 0, то они не будут в итоговом результате, а видны на дисплее при редактировании. Любой иной символ разрешает такое включение. Третье поле отвечает за вывод незаполненных (пустых) символов в поле ввода (по умолчанию это символ подчеркивания). При не заданных значениях второго и третьего полей, действуют значения по умолчанию.
В шаблоне (маске) используются следующие специальные символы:
- ! — Наличие этого символа в маске означает, что необязательные символы вставляются перед шаблоном, если отсутствует то после шаблона;
- > — символы, следующие за этим символом переводятся в верхний регистр;
- < — символы, следующие за этим символом, переводятся в нижний регистр;
- <> — прекращение преобразования символов;
- \ — символ следующий далее вставляется в шаблон (маску). Это необходимо для того чтоб произвольные символы могли быть частью шаблона;
- L — в данной позиции должна стоять буква;
- I — в данной позиции разрешен ввод буквы, но возможно ничего не вводить;
- A — в данной позиции возможен ввод цифры или буквы;
- a — возможно в данной позиции вставить цифру, букву или оставить пустой;
- C — в данной позиции возможен ввод любого символа;
- 0 — в данную позицию необходимо ввести цифру;
- 9 — в данной позиции может находиться цифра или она будет пустой;
- # — в данной позиции может быть цифра, +, -. Позиция может быть оставлена пустой;
- : — используется для разделения часов, минут и секунд в показаниях времени;
- _ — в данном месте автоматически будет вставлен пробел.
Символы не описанные выше вставляются в результирующий текст без изменений.
Для вызова редактора маски делаем двойной щелчок в области многоточия. Вид данного редактора показан ниже.
Маску можно выбрать из образцов в поле Sample Masks или ввести вручную в поле Input Mask. Легче выбрать из образцов наиболее близкую маску и отредактировать ее. Поле Character for Blanks задает вид незаполненной позиции во входной строке. Значок Save Literal Characters отвечает за включение в маску литеральных символов. В поле Test Input проверяется функциональность маски и мы можем увидеть какой будет вид пустого поля в приложении.
Итог: мы рассмотрели компонент MaskEdit и его предназначении в приложении.
P.S. Пример - расположим на форме простую кнопку. Добавим по 2 компонента MaskEdit и Edit. Свойство EditMask у компонентов будут такими: и
отличаются они вторым полем в одном 0 в другом 1.
Создадим обработчик для кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := MaskEdit1.Text;
Edit2.Text := MaskEdit2.Text;
end;
Теперь запустим наше приложение. Введем в поля основанные на компоненте MaskEdit даты, я ввел две одинаковые и нажав на кнопку получил результат показанный ниже.
Как видно из данного примера два нижних значения отличаются наличием точек.
написано “Если стоит 0, то они не будут в итоговом результате, а видны на дисплее при редактировании.”
вопрос : 1 В каком “итоговом результате” , о чем речь ,после заполнения поля
или после …чего еще..
2 Видны на дисплее при редактировании – это когда уже программа запущена
ясности нет о чем речь , и примеры желательно
добавил пример в конце статьи.
Спасибо за поддержку Уважаемый Admin