Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Основа текстовых редакторов – класс TCustomEdit
Как уже отмечалось, класс TCustomEdit является абстрактным классом, не способным самостоятельно стать элементом управления. Вместе с тем в TCustomEdit инкапсулированы свойства и методы, незаменимые для формирования полноценных компонентов, работающих с текстом. Класс TCustomEdit позволяет:
• хранить и редактировать текст; • выделять часть текста с возможностью редактирования только этой части; • описывать реакцию на изменения текста.
С основным свойством всех текстовых компонентов мы уже знакомы. Еще при изучении класса TControl мы узнали о поле, специализирующемся на хранении текстовой информации:
property Text: TCaption; type TCaption = string;
Подавляющее большинство свойств и методов TCustomEdit предназначены для обслуживания этого свойства. За установку регистра вводимого текста отвечает свойство:
property CharCase: TEditCharCase; type TEditCharCase = (ecNormal {нормальный}, ecUpperCase {ПРОПИСНОЙ}, ecLowerCase {строчный});
Запрет на редактирование текста накладывает свойство ReadOnly при установке его в true:
property ReadOnly: Boolean;
Установить предел на максимальное количество символов, хранящихся в свойстве Text, поможет свойство MaxLength. По умолчанию установлено значение 0, т. е. длина строки не ограничена.
property MaxLength: Integer;
Если планируется применение потомка класса TCustomEdit для ввода конфиденциальной информации, такой как пароли и шифры, то для скрытия вводимого текста рекомендуется воспользоваться свойством: property PasswordChar: Char;
Если значение свойства отличается от символа с кодом ноль (#0), то при отображении содержимого строки реальные символы будут подменяться символом из PasswordChar. Так же поступает Windows NT при вводе пользователем своего пароля. У строк редактирования, построенных на основе классов TEdit и TMaskEdit, объявлено свойство AutoSelect, при установке которого в true элемент управления автоматически выделит весь текст при получении им фокуса ввода.
property AutoSelect: Boolean;
А следующее свойство решает, оставлять или нет подсветку выделенного в элементе управления текста при потере им фокуса ввода: property HideSelection: Boolean;
Значение true голосует за то, чтобы скрывать выделение, а false как всегда против. Выделенный в элементе управления текст вы обнаружите в свойстве SelText. Свойство доступно не только для чтения, но и для записи.
property SelText: string;
При желании выделение текста производится не только мышью или клавишами клавиатуры, но и программным способом. Для этого объявлены два свойства, которые определяют порядковый номер первого выделяемого символа и всю длину выделяемого текста соответственно:
property SelStart: Integer; property SelLength: Integer;
Для выделения всего текста воспользуйтесь методом SelectAll, а для удаления выделенного текста пригодится процедура ClearSelection:
procedure SelectAll; procedure ClearSelection;
Для работы с выделенным текстом предусмотрены методы редактирования, совместимые с форматом функций Windows API. В качестве аргументов этих методов выступают указатели на строки PChar:
function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; virtual; procedure SetSelTextBuf(Buffer: PChar);
Взаимодействие с буфером обмена Windows производится с помощью процедур:
procedure CopyToClipboard; //копировать в буфер procedure CutToClipboard; //вырезать в буфер procedure PasteFromClipboard; //вставить из буфера
Проверить, модифицировался ли текст компонента, можно при помощи свойства:
property Modified: Boolean;
Если содержимое свойства Text изменялось, свойство Modified автоматически переводится в состояние true. Контролируя Modified, мы можем предотвратить несанкционированную потерю данных. Изучите следующие строки кода:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); Begin
|