Учебный центр "ANIT Texno Inform"
Опубликован: 25.06.2014 | Доступ: свободный | Студентов: 2595 / 850 | Длительность: 24:39:00
Специальности: Программист
Лекция 5:

Символы и строки

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Компонент TMaskEdit

На той же вкладке Additional находится еще один полезный компонент для ввода строк - TMaskEdit:

Компонент TMaskEdit

Рис. 5.6. Компонент TMaskEdit

Этот компонент предназначен для ввода текста по определенным шаблонам - маскам. Когда пользователю нужно будет ввести в этот компонент какой-то текст, он будет вынужден вводить его именно в том виде, в котором нам нужно.

Установите TMaskEdit на форму и посмотрите на его свойства в Инспекторе объектов. В принципе, все свойства нам знакомы. Интерес вызывает лишь одно свойство EditMask. Это сложное раскрывающееся свойство, то есть, щелкнув по кнопке с тремя точками правее свойства, можно его раскрыть:

Раскрывающееся свойство EditMask

Рис. 5.7. Раскрывающееся свойство EditMask

Когда оно раскрыто, мы видим следующую картину:

Редактор масок

Рис. 5.8. Редактор масок

В строке "Маска ввода" мы можем указать маску, которая будет влиять на формат заполняемой пользователем строки. В маске можно применять некоторые символы, вводимые в каждой позиции, и символы, добавляемые самой маской. Маска может иметь следующие символы:

Таблица 5.1. Символы маски компонента TMaskEdit
0 В данной позиции должна быть цифра. Если пользователь введет не все цифры маски, будет создана исключительная ситуация, и он не сможет продолжать работу, не заполнив все положенные цифры. Если такая ситуация возникла у вас во время тестового выполнения программы, можете закрыть программу командой "Запуск->Сбросить отладчик".
9 В данной позиции может быть либо цифра, или ничего.
# В данной позиции может быть знак "+", "-", цифра, или ничего.
L В данной позиции должна быть буква.
l В данной позиции должна быть буква или ничего.
A В данной позиции должна быть буква или цифра.
a В данной позиции должна быть буква или цифра, или ничего.
C В данной позиции должен быть любой символ.
c В данной позиции должен быть любой символ, или ничего.

Кроме того, в маске можно использовать различные разделители:

Таблица 5.2. Символы-разделители маски компонента TMaskEdit
: Обычно применяется для разделения часов, минут, секунд.
/ Обычно применяется для разделения года, месяца, дня.
- Обычно применяется для разделения цифр, например, в телефонных номерах.

Примеры масок:

  • 999-99-99 (телефон)
  • 99/99/9999 (дата)
  • 00:00:00 (время)
  • 999999,00 р. (денежный формат)

Давайте укажем в строке "Маска ввода" маску телефона:

000-00-00
        

Использование нулей в качестве маски означает, что в этом месте обязательно должна быть цифра. Это разумно, ведь иначе номер телефона будет неполный, и мы не сможем дозвониться до абонента. Символы "-" служат разделителями, и добавляются автоматически. Введите маску, нажмите "ОК", сохраните проект и запустите его на исполнение. Теперь мы сможем вводить в маску только цифры. Причем если мы введем не все цифры, и попытаемся выйти из строки редактирования, сгенерируется ошибка. Нам придется либо вернуться и заполнить номер до конца, либо остановить программу, сбросив отладчик.

В Редакторе масок помимо строки "Маска ввода" есть и другие строки. В строке "Символы для пробелов" мы можем указать символ, который будет выводиться маской в том месте, где пользователь должен будет что-то ввести. По умолчанию, это символ подчеркивания "_". Пользователь будет видеть пустую маску телефона, как

___-__-__
        

Мы можем использовать и другие символы для заполнения пробелов.

Ниже в Редакторе масок есть флажок "Сохранить литерал". Этот флажок включает или выключает возможность сохранения в тексте символов-разделителей. Если флажок включен, то в тексте сохранятся символы маски вместе с символами-разделителями, например:

123-45-67
        

Если флажок выключен, то в конечном тексте останутся только символы маски:

1234567
        

В строке "Тестовый ввод" мы можем опробовать полученную маску, не запуская программу на выполнение.

Итак, для нашего примера в строке "Маска ввода" укажите

000-00-00
        

В "Символы для пробелов" оставьте "_". Флажок "Сохранять литерал" пусть будет включен. Как только нажмете "ОК", свойство EditMask изменится, теперь в нем будет текст:

000-00-00;1;_
        

Как видите, значение этого свойства состоит из трех частей, разделенных точкой с запятой. Первая часть - это указанная нами маска. Во второй части может быть либо 0 (флажок "Сохранять литерал" выключен), либо 1 (флажок включен). В третьей части маски указывается символ для пробелов.

Таким образом, мы могли бы и не пользоваться Редактором масок, а указать маску вручную. Например, введя значение

00-00-0000 г.;1;_
        

мы создадим маску, где пользователь будет обязан ввести все цифры месяца, дня и года, где в тексте сохранятся символы-разделители "-", и где на месте пробелов будет знак подчеркивания. В результате, мы получим дату, например в таком виде: "11-11-2013 г.".

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Инга Готфрид
Инга Готфрид
Александр Скрябнев
Александр Скрябнев

Через WMI, или используя утилиту wmic? А может есть еще какие более простые пути...