Учись программированию на C++ Builder бесплатно!
Содержание[Скрыть]

Компонент Edit

Компонент Edit – это простейшее окна редактирования, позволяющее вводить и отображать текстовую информацию в свойстве Text типа AnsiString, но обладает множеством полезных функций. Компонент Edit поддерживает популярные комбинации горячих клавиш: Ctrl+C (копирование текста), Ctrl+X (вырезание текста), Ctrl+V (вставка текста), Ctrl+Z (отмена последнего редактирования текста).

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

Свойства Edit

  • BorderStyle – позволяет редактировать внешний вид окна редактирования Edit. Имеет несколько значений:
    • bsSingle – отображает рамку вокруг окна (по умолчанию);
    • bsNone – скрывает рамку, делая окно редактирования плоским.
  • AutoSize – автоматическое выставление высоты окна редактирования.
  • AutoSelect – при фокусе окна Edit автоматически выделяет весь текст. Имеет несколько значений:
    • SelLength – определяет длину выделенного текста;
    • SelStart – возвращает индекс первого выделенного символа текста;
    • SelText – возвращает выделенный текст.
  • Readonly – запрещает редактировать текст в окне Edit.
  • Text – строка типа AnsiString. Автоматически преобразовывает числовые данные в строку.
  • MaxLength – задаёт максимальное количество вводимых символов в окно Edit. Если установить MaxLength в 0, то длина ввода текста не будет ограничиваться.
  • Modified – определяет было ли редактирование текста в окне Edit или нет.
  • PasswordChar – маскирует все вводимые символы, превращая окно Edit в окно ввода пароля. Принимает любое значение, которое будет заменять каждый символ в строке. По умолчанию указано «#0», т.е. нулевой символ.

Пример Edit с AutoSelect

Label1->Caption = "SelLength - " + IntToStr(Edit1->SelLength);
Label2->Caption = "SelStart - " + IntToStr(Edit1->SelStart);
Label3->Caption = "SelText - " + Edit1->SelText;

Пример Edit с AutoSelect

Пример Edit с Text

Если вводить программно числовые операции, то компилятор нормально запустит приложении и отобразит результат:

Edit1->Text = 5/2;
// => 2

Если вводить в окно Edit числовые операции в запущенном приложении, то следует предварительно использовать функции преобразования StrToInt (из строки в целое число) и StrToFloat (из строки в число с плавающей запятой), во избежание генерации исключения EConvertError.

//Не правильно
float a = Edit1->Text;
// => no viable conversion from 'Vcl::Controls::TCaption' (aka 'System::UnicodeString') to 'float'

//Верно
float a = StrToFloat(Edit1->Text);

Компонент LabeledEdit

Компонент LabeledEdit представляет из себя комбинацию нескольких компонентов: Edit и Label, которая отображается свойством EditLabel объекта класса TBoundLabel. Этот класс поддерживает все свойства текстовой метки Label, с которыми можно ознакомиться здесь.

Свойства LabeledEdit

Компонент LabeledEdit имеет все свойства Edit, но есть и некоторые дополнения.

  • LabelPosition – устанавливает расположение своей метки и имеет несколько значений:
    • lpAbove – расположение по верхнему левому краю;
    • lpBelow – расположение по нижнему левому краю;
    • lpLeft – расположение по левому краю;
    • lpRight – расположение по правому краю.

Компонент LabeledEdit появился в C++Builder 6 и значительно упростил разработку приложений, т.к. в большинстве случаев Edit всегда использовалось с Label для пояснения назначения окна редактирования.

Компонент MaskEdit

Компонент MaskEdit по функционалу и назначению схож с Edit и LabeledEdit, но имеет одно преимущество – позволяет задавать маску в свойстве EditMask. Это позволяет ограничить ввод текста, обеспечив получение синтаксически безошибочных данных, например, ввод номера телефонов, контактных данных и т.п. Маска состоит из трёх частей, разделяющихся точкой с запятой «;»:

  1. В первую часть записываются специальные символы, которые разрешается вводить в каждую позицию, и символы маски.
  2. Вторая часть содержит 1 или 0, т.е. надо или нет, чтобы символы маски добавлялись в свойство Text компонента MaskEdit.
  3. В третьей части нужно указывать символ, отвечающий за обозначение позиции, в которой не был осуществлён ввод.

Настройка маски компонента MaskEdit

Символы шаблона маски

Символ Описание
!

Если указан символ, то EditText добавляет пробелы в недостающие символы. В противном случае пробелы будут размещаться в конце.

>

Все последующие за «>» символы должны вводиться в верхнем регистре до окончания маски или символа «<».

<

Все последующие за «<» символы должны вводиться в нижнем регистре до окончания маски или символа «>».

<> 

Не учитывает регистр вводимых символов.

\

Указывает, что следующим за ним символ должен быть буквенным.

L

Указывает, что следующим за ним символ должна быть буква.

l

Указывает, что следующим за ним символ должна быть только буква или ничего.

A

Указывает, что следующим за ним символ должна быть буква или цифра.

a

Указывает, что следующим за ним символ должна быть буква, или цифра, или ничего.

С

Указывает, что следующим за ним символ может быть любым символом.

с

Указывает, что следующим за ним символ может быть любым символом или ничего.

0

Указывает, что следующим за ним символ должна быть цифра.

9

Указывает, что следующим за ним символ должна быть цифра или ничего.

#

Указывает, что следующим за ним символ должна быть цифра, знак «+», знак «-» или ничего.

:

Используется для разделения времени на часы, минуты и секунды.

/

Используется для разделения даты на дни, месяцы и годы.

_

Автоматически вставляет пробел в текст.

Поделиться