Компонент 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 с 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 или 0, т.е. надо или нет, чтобы символы маски добавлялись в свойство Text компонента MaskEdit.
- В третьей части нужно указывать символ, отвечающий за обозначение позиции, в которой не был осуществлён ввод.
Символы шаблона маски
Символ | Описание |
---|---|
! | Если указан символ, то EditText добавляет пробелы в недостающие символы. В противном случае пробелы будут размещаться в конце. |
> | Все последующие за «>» символы должны вводиться в верхнем регистре до окончания маски или символа «<». |
< | Все последующие за «<» символы должны вводиться в нижнем регистре до окончания маски или символа «>». |
<> | Не учитывает регистр вводимых символов. |
\ | Указывает, что следующим за ним символ должен быть буквенным. |
L | Указывает, что следующим за ним символ должна быть буква. |
l | Указывает, что следующим за ним символ должна быть только буква или ничего. |
A | Указывает, что следующим за ним символ должна быть буква или цифра. |
a | Указывает, что следующим за ним символ должна быть буква, или цифра, или ничего. |
С | Указывает, что следующим за ним символ может быть любым символом. |
с | Указывает, что следующим за ним символ может быть любым символом или ничего. |
0 | Указывает, что следующим за ним символ должна быть цифра. |
9 | Указывает, что следующим за ним символ должна быть цифра или ничего. |
# | Указывает, что следующим за ним символ должна быть цифра, знак «+», знак «-» или ничего. |
: | Используется для разделения времени на часы, минуты и секунды. |
/ | Используется для разделения даты на дни, месяцы и годы. |
_ | Автоматически вставляет пробел в текст. |