18.1.5. TEdit - ввод и отображение строки

Компонент класса TEdit представляет собой однострочный редактор текста. С его помощью можно вводить и/или отображать достаточно длинные текстовые строки.

Центральным свойством компонента является Text, которое представляет собой отображаемую компонентом строку. С помощью обработчика события onchange программа может контролировать вводимый пользователем текст и при необходимости фильтровать его, игнорируя недопустимые символы. В следующем примере компонент фильтрует все символы, которые не соответствуют правильному представлению вещественного числа:

var

OldText: String;

procedure TFormI.EditlChange(Sender: TObject);

begin

if Editl.Text<>'' then

try

StrToFloat(Editi.Text) ;

OldText := Editl.Text except

// Ошибка преобразования: восстанавливаем прежний текст

Editl.Text := OldText;

// и позиционируем текстовый указатель в конец текста:

Editl.SelStart := Length(Editi.Text);

Editi.SelText := ''

end

end;

При повторении примера подготовьте глобальную переменную OldText типа String, в которой запоминается последний правильно введенный текст. Лучше всего ее поместить в секцию Private класса формы - тогда ее можно не обнулять в момент начала работы.

Примечание

Позиционировать текстовый указатель на любой символа строки .можно с помощью свойств SelStart и SelText: в первое нужно поместить порядковый номер символа от начала текста, после который должен стоять указауель ввода, во-второе -пустую строку.

Свойства компонента:

property AutoSelect: Boolean;

 

 

Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода

property AutoSize: Boolean;

 

 

Если содержит True и BorderStyle=bsSingle,

высота компонента автоматически меняется при изменении свойства Font. Size

TBorderStyle =

bsNone..bsSingle;

property BorderStyle: TBorderStyle;

Определяет стиль обрамления компонента:

bsNone - нет обрамления; bsSingle - компонент

обрамляется одной линией

property CanUndo: Boolean;

 

Содержит True, если сделанные пользователем изменения в тексте Text можно убрать методом Undo

TEditCharCase = (ecNormal,

ecUpperCase, ecLowerCase) ;

Определяет автоматическое преобразование высоты букв: ecNormal - нет преобразования; ecUpper

property CharCase: TEditChar

Case;

Case - все буквы заглавные; ecLowerCase - все буквы строчные. Правильно работает с кириллицей

property HideSelection: Boolean;

Если содержит False, выделение текста сохраняется при потере компонентом фокуса ввода

property MaxLength: Integers;

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

property Modified: Boolean;

Содержит True, если текст был изменен

property OnChange: TNotifyEvent;

Определяет обработчик события OnChange, которое возникает после любого изменения текста

property OEMConvert: Boolean;

Содержит True, если необходимо перекодировать текст из кодировки MS-DOS в кодировку Windows и обратно

property PasswordChar: Char; 

Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей

property Readonly: Boolean;

Если содержит True, текст не может изменяться

property SelLength: Integers;

Содержит длину выделенной части текста

property SelStart: Integers; 

Содержит номер первого символа выделенной части текста

property SelText: Strings-

Содержит выделенную часть текста

property Text: String;

Содержит весь текст

Методы компонента:

 procedure Сlears;

Удаляет весь текст

procedure ClearSelection;

Удаляет выделенный текст

procedure ClearUndo;

Очищает буфер метода Undo

procedure CopyToClipboard;

Копирует выделенный текст в clipboard

procedure CutToClipboard;

Копирует выделенный текст в clipboard, после чего удаляет выделенный текст из компонента

function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integers;

Копирует не более BufSize символов выделенного текста в буфер Buffer

procedure PasteFromClipboard;

Заменяет выделенный текст содержимым Clipboard, а если нет выделенного текста, копирует содержимое Clipboard в позицию текстового курсора

procedure SelectAll;

Выделяет весь текст

procedure SetSelText-Buf(Buffer: PChar);

Заменяет выделенный текст содержимым Buffer, а если нет выделенного текста, копирует содержимое Buffer в позицию текстового курсора

procedure Undo;

Восстанавливает текст в том виде, в каком он был перед последним получением компонентом фокуса ввода

Свойство CanUndo и методы СlearUndo и undo впервые введены в версии Delphi 4.