IfEditl.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; | Восстанавливает текст в том виде, в каком он был перед последним получением компонентом фокуса ввода |
Дата добавления: 2016-03-04; просмотров: 762;