Delphi. Панель Additional. Компоненты StaticText, MaskEdit

Компонент «StaticText»это оконный компонент, отображающий текст на форме, без возможности редактирования пользователем. StaticText функционирует подобно «Label», но отличается тем, что имеет рамку (бордюр) вокруг текста.

Свойство Caption

Это свойство определяет содержащийся в компоненте текст, который можно сформировать только на этапе конструирования формы.

Свойство AutoSize

Это свойство определяет размер меток (компонента) StaticText.

Если значение это свойства равно True, то горизонтальный и вертикальный размеры компонента зависят от размера надписи.

Если же значение свойства AutoSize равно False, то выравнивание текста определяется свойством Alignment, которое определяет выравнивание текста по левому или правому краю, или же по центру.

Если значение свойства AutoSize равно False и размер компонента позволяют вместить нескольких строк, то перенос длинного текста по словам осуществляется автоматически.

Чтобы в StaticText осуществлялся перенос слов при изменении пользователем размеров приложения, необходимо осуществлять перерисовку компонента с помощью метода Repaint в обработчике событий OnResize.

Свойство BorderStyle

Это свойство определяет рамку компонента.

Компонент Delphi MaskEdit (Шаблон ввода)

Компонент MaskEdit (Шаблон ввода) расположен на странице Additional палитры компонентов.

Как и компонент, Edit, MaskEdit является однострочным редактором с возможностью вводить текст по заданному шаблону.

С помощью шаблона можно ограничить число и тип вводимых данных (например, только цифры).

Например, вводить почтовые индексы, телефоны, даты, то есть такую информацию, для которой определен свой формат (маска).

Свойство EditMask

Свойство EditMask позволяет задать маску для форматирования текста.

Маска (шаблон) — это последовательность символов. Например:

!AaCcLl09#()-:.,_> или < или <> а также \A

По своему предназначению символы маски делятся на:

  • служебные
  • обязательные
  • не обязательные
  • разделители
  • все остальные

Служебные символы.

Служебных символов три. Это «;» «!» и «-». Символ «;» служит для отделения зон маски друг от друга. Символ «-» символизирует пробел (он и появляется при нажатии клавиши пробела).Символ «!» выполняет служебную функцию.

Само поле маски делится на три зоны:

  • зона собственно шаблона
  • зона управляющего символа
  • зона символа, служащего для визуализации маски

Как было сказно ранее, символ «;» служит для отделения зон (полей) маски друг от друга. Например:

Например: C##.09(99)-aaa;1;x

О двух других члужебных символах скажем позднее.

Первое поле (зона) шаблона в нашем примере — это C##.09(99)-aaa.

Второе поле — это «1».

Третье поле — в примере это «х», но может быть любой другой символ, не являющийся предопределённым символом шаблона.

Зона шаблона. Обязательные символы.

Обязательные символы должны быть обязательно напечатаны, иначе будет выдана ошибка времени выполнения. Чтобы программа аварийно не остановилась при возникновении подобной ошибки, необходимо предусмотреть обработку «исключительной ситуации».

К обязательным символам относятся:

  • C — Обязательное расположение в данной позиции любого символа
  • A — Обязательное расположение в данной позиции цифры или буквы
  • L — Обязательное расположение в данной позиции буквы
  • 0 — Обязательное расположение в данной позиции цифры

Зона шаблона. Необязательные символы.

Эти символы не обязательно впечатывать при вводе данных. К ним относятся:

  • c — Необязательное расположение в данной позиции любого символа
  • a — Необязательное расположение в данной позиции цифры или буквы
  • l (прописное L) Необязательное расположение в данной позиции буквы
  • 9 — Необязательное расположение в данной позиции цифры
  • # — Необязательное расположение в данной позиции цифры или знаков: «плюс» (+) либо «минус» (-)

Зона шаблона. Символы — разделители.

Символами — разделителями являются:

«:» «/» «.» «,» « » (пробел). Они являются вспомогательными символами.

Зона шаблона. Управляющие символы.

  • \ — если в шаблоне должна находиться символьная константа, то она записывается, например, в виде: «\A», то есть в итоговом значении будет присутствовать символ «А» в заданной позиции, и в этой позиции ничего другого присутствовать уже не может. Этот прием применяется для символов, применяемых в шаблоне. Остальные сим
  • > — Преобразует после этого знака буквы в прописные.
  • < — Преобразование после этого знака букв в строчные
  • <> — Прекращение преобразования букв
  • ! — управляет отображением/не отображением ведущих/замыкающих пробелов, если во втором поле стоит «0»

Вторая зона (поле)

Вторая зона является управляющей.

Она по умолчанию содержит «1». Такое значение (или любое другое значение, отличное от нуля) определяет, что вспомогательные символы войдут в итоговый текст.

Если второе поле содержит «0», то вспомогательные символы не будут видны в итоговом результате. Они будут видны только в процессе редактирования.

Как было сказано ранее, вспомогательными символами являются разделители.

Итоговый результат — это набор символов, который передаётся в какое-либо текстовое поле или строковую переменную для дальнейшего использования и анализа (например, введена дата и она сравнивается с какой-либо предопределённой датой), или входит ли введённый номер телефона в имеющуюся базу телефонов, и так далее.

Третья зона (поле).

Она отвечает за отображение в поле ввода позиций, в которые надо вводить символы (по умолчанию это символ подчеркивания). Например,

ххх.хххх-(хх)

Замечание.Для правильного заполнения шаблона надо знать его формат.

Если не задать значения второго и третьего полей, то действуют значения по умолчанию — «1» для второго поля и знак подчёркивания «_» для третьего.

Символ «!»

Этот символ указывается первым в шаблоне.

Но его действие проявляется только тогда, когда во втром поле стоит «0».

Если в начале шаблона стоят необязательные символы и в процессе ввода они не будут заполнены (то есть вместо символов будут оставлены пробелы), то при передаче значения из «EditText» в компонент «Edit» (или в переменную типа string) эти ведущие пробелы будут удалены.

Если о втром поле стоит «0», а знак «!» отсутствует, то удаляются конечные пробелы, если они есть.

Например: «!999#000-00-00» Символ «9» означает, что на его месте может быть либо цифра, либо пробел. А символ «#» позволяет ввести «-» (шаблон телефонного номера). Если первые четыре значения не введены, то вместо них будут поставлены пробелы и при выводе значения в «Edit» ведущие пробелы будут удалены.

Символы, не описанные выше, вставляются в результирующий текст без изменений.

Маску можно выбрать из образцов в поле Sample Masks или ввести вручную в поле Input Mask.

Поле Character for Blanks задает вид незаполненной позиции во входной строке.

Значок Save Literal Characters отвечает за включение в маску литеральных символов.

В поле Test Input проверяется функциональность маски и мы можем увидеть, какой будет вид пустого поля в приложении.

Рассмотрим пример. Расположим на форме кнопку. и добавим по 2 компонента MaskEdit и Edit. Свойство «EditMask» у компонентов будут такими:

и

Эти две маски отличаются вторым полем: в одном 0, а в другом 1.

Создадим обработчик для кнопки: procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := MaskEdit1.Text;
Edit2.Text := MaskEdit2.Text;
end;

Введя одинаковые значения даты в поля для «MaskEdit1» и «MaskEdit2», получим результат, показанный ниже.

Как видно из данного примера два нижних значения отличаются наличием точек.

Пример применения разных масок для MaskEdit

Приведём ещё один пример. Разместим на форме следующие компоненты:

При нажатии первой кнопки в свойство «EditMask1.EditMask» будет введено значение, отображённое в заголовке кнопки:

procedure TForm1.Button4Click(Sender: Tobject);
begin
self.MaskEdit1.Clear;//очищаем компонент
self.MaskEdit1.EditMask:=’8-C999C-000-00-00;1;x’;//вводим новую маску
self.Edit1.Text:=»;//очищаем компонент «Edit»
self.Edit2.Text:=»;
end;

Аналогично для трёх других кнопок.

Кнопка «Button1» заполняет поля «Edit1» и «Edit2»:

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=self.MaskEdit1.EditText;
edit2.Text:=self.MaskEdit1.Text;
end;

Это позволяет увидеть разницу между свойствами «EditText» и «Text».

Посмотрим результаты ввода значений в разные маски.

После нажатия первой кнопки получим шаблон для ввода:

Введём значения и отобразим их:

Аналогично поступим с тремя другими кнопками.

Так как символ «9» необязательный, то не будем вводить в эти позиции символы. В результате получим:

В шаблоне следующей кнопки присутствует служебный символ «!», а значение второго поля изменено на «0». Замечание. В этом примере символ шаблона «х» заменён на «0».

При заполнении шаблона, который символизирует ввод времени, не будем вводить первые две цифры. В результате получим:

Последний шаблон используем для ввода значения температуры:

Свойство MaxLength

Оно определяет максимальное количество символов, которое можно ввести в поле компонента.

Свойство AutoSize

Это свойство подстраивает высоту компонента под размер шрифта. (но не под лину строки, воодимой в компонент).

Свойство PasswordChar

По умолчанию это свойство равно «#0», то есть текст в поле компонента отображается обычным образом. Изменим это значение на «*»:

Введём маску: «ССССС;1;_» (разрешается вводить любой символ, все символы обязательны). При вводе символов они остаются неотображаемыми (мы видим звёздочки). Но введённые значения отобразятся в «Edit».

***

Обновлено: 31.08.2021 — 14:38

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *