На этом шаге мы рассмотрим компонент TEdit
В компоненте TEdit (Поле ввода) хранится текст, который можно помещать в данный компонент, как во время проектирования, так и во время выполнения программы.
Компонент класса TEdit представляет собой однострочное редактируемое текстовое поле. С его помощью можно вводить и/или отображать достаточно длинные текстовые строки.
Свойства компонента TEdit представлены в таблице.
Свойство | Описание |
---|---|
property Text: String; | Содержит отображаемую компонентом строку |
property MaxLength: Integer; | Определяет максимальное количество символов в поле ввода. Если имеет значение 0, то количество символов ничем не ограничено |
property Font: TFont; | С его помощью можно устанавливать шрифт текста, его размер и цвет |
property ReadOnly: Boolean; (Только чтение) | Если это свойство установить в True, то во время выполнения программы пользователь не сможет изменять текст в поле ввода |
property AutoSize: Boolean; | Как и для надписи, может принимать значения True и False, но эффект автоматической подгонки размера выражается несколько по-другому, чем для надписи. Здесь изменяется только высота поля ввода в зависимости от размера шрифта |
property BevelEdges: TBevelEdges;
property BevelInner: TBevelCut; property BevelKind: TBevelKind; property BevelOuter: TBevelCut; |
Эти свойства определяют эффект объемности поля ввода |
property BorderStyle: TBorderStyle; | Определяет вид рамки для поля ввода |
property PasswordChar: Char; | Позволяет скрыть вводимый текст, отображая вместо реально вводимых символов единственный символ, установленный как значение свойства PasswordChar. Символ #0 отключает этот режим |
property AutoSelect: Boolean; | Определяет, будет ли выделяться весь текст в момент получения компонентом фокуса ввода |
property CanUndo: Boolean; | Содержит значение True, если сделанные пользователем изменения в тексте Text можно убрать методом Undo |
type TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase);
propertyCharCase: TEditCharCase; |
Определяет способ автоматического преобразования регистра букв:
Правильно работает с кириллицей |
property HideSelection: Boolean; | Если содержит значение False, выделение текста сохраняется при потере компонентов фокуса ввода |
property Modified: Boolean; | Содержит значение True, если текст был изменен |
property OnChange: TNotifyEvent; | Определяет обработчик события OnChange, которое возникает после любого изменения текста |
property OEMConvert: Boolean; | Содержит значениеTrue, если необходимо перекодировать текст из кодировки MS-DOS в кодировку Windows и обратно |
property SelLenght: Integer; | Содержит длину выделенной части текста |
property SelStart: Integer; | Содержит номер первого символа выделенной части текста |
property SelText: String; | Содержит выделенную часть текста |
Методы компонента TEdit перечислены в таблице.
Метод | Описание |
---|---|
procedure Clear; | Удаляет весь текст |
procedure ClearSelection; | Удаляет выделенный текст |
procedure ClearUndo; | Очищает буфер метода Undo |
procedure CopyToClipboard; | Копирует выделенный текст в буфер обмена |
procedure CutToClipboard; | Копирует выделенный текст в буфер обмена, после чего удаляет выделенный текст из компонента |
procedure PasteFromClipboard; | Заменяет выделенный текст содержимым буфера обмена, а если нет выделенного текста, копирует содержимое буфера обмена в позицию текстового курсора |
procedure SelectAll; | Выделяет весь текст |
procedure SetSelTextBuf (Buffer: PChar); | Заменяет выделенный текст содержимым буфера Buffer, а если нет выделенного текста, копирует содержимое буфера Buffer в позицию текстового курсора |
procedure Undo; | Восстанавливает текст в том виде, в котором он был перед последним получением компонентов фокуса ввода |
function GetSelTextBuf (Buffer: PChar; BufSize: Integer): Integer; | Копирует не более BufSize символов выделенного текста в буфер Buffer |
Рис.1.Однострочное редактируемое текстовое поле компонента TEdit
С помощью обработчика события OnChange программа может контролировать вводимый пользователем текст и при необходимости фильтровать его, игнорируя недопустимые символы. В следующем примере компонент фильтрует все символы, которые не соответствуют правильному представлению вещественного числа:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; OldText:String; implementation {$R *.dfm} procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text<>'' then try StrToFloat(Edit1.Text); OldText :=Edit1.Text except // Ошибка преобразования: восстанавливаем прежний текст Edit1.Text:=OldText; //и позицируем текстовый курсор в конец текста: Edit1.SelStart:=Length(Edit1.Text); Edit1.SelText:='' end; end; end.
На следующем шаге мы рассмотрим компонент TMemo