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.