Основа текстовых редакторов – класс TCustomEdit
Как уже отмечалось, класс TCustomEdit является абстрактным классом, не способным самостоятельно стать элементом управления. Вместе с тем в TCustomEdit инкапсулированы свойства и методы, незаменимые для формирования полноценных компонентов, работающих с текстом. Класс TCustomEdit позволяет:
•хранить и редактировать текст;
•выделять часть текста с возможностью редактирования только этой части;
•описывать реакцию на изменения текста.
С основным свойством всех текстовых компонентов мы уже знакомы. Еще при изучении класса TControl мы узнали о поле, специализирующемся на хранении текстовой информации:
propertyText: TCaption;
typeTCaption = string;
Подавляющее большинство свойств и методов TCustomEdit предназначены для обслуживания этого свойства. За установку регистра вводимого текста отвечает свойство:
propertyCharCase: TEditCharCase;
typeTEditCharCase = (ecNormal {нормальный}, ecUpperCase {ПРОПИСНОЙ},
ecLowerCase {строчный});
Запрет на редактирование текста накладывает свойство ReadOnly при установке его в true:
propertyReadOnly: Boolean;
Установить предел на максимальное количество символов, хранящихся
в свойстве Text, поможет свойство MaxLength. По умолчанию установлено значение 0, т. е. длина строки не ограничена.
propertyMaxLength: Integer;
Если планируется применение потомка класса TCustomEdit для ввода конфиденциальной информации, такой как пароли и шифры, то для скрытия вводимого текста рекомендуется воспользоваться свойством:
propertyPasswordChar: Char;
Если значение свойства отличается от символа с кодом ноль (#0), то при отображении содержимого строки реальные символы будут подменяться символом из PasswordChar. Так же поступает Windows NT при вводе пользователем своего пароля. У строк редактирования, построенных на основе классов TEdit и TMaskEdit, объявлено свойство AutoSelect, при установке которого в true элемент управления автоматически выделит весь текст при получении им фокуса ввода.
propertyAutoSelect: Boolean;
А следующее свойство решает, оставлять или нет подсветку выделенного в элементе управления текста при потере им фокуса ввода:
propertyHideSelection: Boolean;
Значение true голосует за то, чтобы скрывать выделение, а false как всегда против. Выделенный в элементе управления текст вы обнаружите в свойстве SelText. Свойство доступно не только для чтения, но и для записи.
propertySelText: string;
При желании выделение текста производится не только мышью или клавишами клавиатуры, но и программным способом. Для этого объявлены два свойства, которые определяют порядковый номер первого выделяемого символа и всю длину выделяемого текста соответственно:
propertySelStart: Integer;
propertySelLength: Integer;
Для выделения всего текста воспользуйтесь методом SelectAll, а для удаления выделенного текста пригодится процедура ClearSelection:
procedureSelectAll;
procedureClearSelection;
Для работы с выделенным текстом предусмотрены методы редактирования, совместимые с форматом функций Windows API. В качестве аргументов этих методов выступают указатели на строки PChar:
functionGetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; virtual;
procedureSetSelTextBuf(Buffer: PChar);
Взаимодействие с буфером обмена Windows производится с помощью процедур:
procedureCopyToClipboard; //копировать в буфер
procedureCutToClipboard; //вырезать в буфер
procedurePasteFromClipboard; //вставить из буфера
Проверить, модифицировался ли текст компонента, можно при помощи
свойства:
propertyModified : Boolean;
Если содержимое свойства Text изменялось, свойство Modified автоматически переводится в состояние true. Контролируя Modified, мы можем предотвратить несанкционированную потерю данных. Изучите следующие строки кода:
procedureTForm1.FormClose(Sender: TObject; varAction: TCloseAction);
Begin
Дата добавления: 2016-03-15; просмотров: 962;