Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

3.11.4. Общие свойства полей ввода (edit)

Теперь я перечислю общие методы, свойства и события всех полей ввода (т.е. относящиеся, в основном, и к объектам для редактирования обычного текста - memo, и форматированного текста - rich edit).

Text - (то же, что и Caption). Да, я уже упоминал это свойство среди самых общих для всех визуальных объектов. Но для поля ввода не будет лишним напомнить о существовании такого свойства, которое обеспечивает доступ сразу ко всему редактируемому и отображаемому тексту, возвращая его в одной строке (и позволяя изменить весь текст путем присваивания строки этому свойству);

TextSize - размер текста в байтах. Для форматированного текста, возвращает размер текста без учета форматирования. (См. так же свойство RE_TextSize);

SelStart - позиция начала области выделения (индекс символа в общем массиве символов текста, начиная с нуля). Если выделение не пусто, то это будет индекс первого выделенного символа. При пустом выделении свойство SelStart все еще имеет значение - как текущая позиция ввода в тексте (визуально изображаемая мигающей кареткой). И тогда она указывает на индекс символа, перед которым будут впечатываться новые вводимые с клавиатуры символы;

SelLength - длина выделенного фрагмента текста (мне ведь не надо здесь объяснять, для чего вообще текст выделяют, правда?);

Selection - свойство-строка, представляющее текущее выделение (его можно читать, чтобы получить выделенный фрагмент, или присвоить этому свойству другую строку, чтобы заменить все выделение). Для поля ввода форматированного текста, данное свойство представляет выделенный текст в неформатированном виде, для получения выделения с форматированием, следует использовать специализированное свойство RE_Text;

ReplaceSelection( s, canundo ) - позволяет заменить текущее выделение строкой s, и при этом дополнительно указать, что данная операция попадет в стек откатов (т.е. если параметр canundo = true, то данная операция может быть отменена);

SelectAll - при вызове делает весь текст в поле выделенным;

DeleteLines( i1, i2 ) - удаляет строки в указанном диапазоне;

Item2Pos( i ) - для заданного индекса строки, возвращает позицию ее первого символа в тексте (для однострочного поля ввода возвращается 0);

Pos2Item( i ) - для заданной позиции в тексте, возвращается индекс строки, к которой этот символ принадлежит;

EditTabChar - "сквозной" метод, обеспечивающий впечатывание символа табуляции в тексте при нажатии клавиши Tab (в том числе для полей, для которых при создании не была указана опция eoWantTab);

Ed_Transparent - позволяет сделать поле ввода простого текста (не форматированного) практически полностью "прозрачным". Может использоваться для достижения специальных визуальных эффектов (например, если родителем поля ввода является градиентная панель);

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

З

амечу, что для поля ввода событие OnSelChange смысла не имеет и не срабатывает, при необходимости отслеживать изменение позиции каретки и выделения текста следует обрабатывать сообщения клавиатуры и мыши, в результате действия которых и происходит изменение указанных параметров. Причем, поскольку изменения эти происходят после отработки события, в самом обработчике следует отправлять себе пользовательское сообщение, используя PostMsg, и отлавливать именно это сообщение;

CanUndo - проверяет, может ли сейчас быть выполнена операция отката изменений (undo);

EmptyUndoBuffer - очищает стек отката (после чего откат выполненных изменений становится невозможен, и метод CanUndo возвращает false);

Undo - выполняет откат одного выполненного изменения (см. так же RE_Redo).