|
<< Нажмите, чтобы показать Содержание >> Получение элементов документа ТРВ-Редактора (TRichView) |
Для получения информации об элементах документа можно использовать две группы методов:
▪Методы Get***Info, объявленные в TRichView, могут быть использованы для получения информации о любом элементе;
▪Методы GetCurrent***Info, объявленные в TRichViewEdit, возвращают свойства текущего (в позиции каретки) элемента.
Методы GetCurrent***Info работают так же, как Get***Info(CurItemNo,...). Но есть важное исключение: при использовании таблиц, методы GetCurrent***Info возвращают свойства элемента в любом расположении (как в корневом редакторе, так и в редакторе ячейки).
Свойство TRichView.ItemCount (только для чтения) возвращает число элементов документа.
function RichView.GetItemStyle(ItemNo: Integer): Integer;
Этот метод возвращает стиль (точнее сказать, тип) элемента документа с указанным номером.
Если возвращённое значение >=0, то это текстовый элемент, а значение является номером в коллекции стилей текста (RichView.Style.TextStyles).
Если возвращённое значение <0, то это нетекстовый элемент. Это значение может быть одним из следующих значений (список неполный):
Константа |
Значение |
Смысл |
|---|---|---|
rvsBreak |
-1 |
|
rvsPicture |
-3 |
|
rvsHotspot |
-4 |
|
rvsComponent |
-5 |
|
rvsBullet |
-6 |
|
rvsHotImage |
-10 |
|
rvsListMarker |
-11 |
маркер списка (значок или номер абзаца) |
rvsTab |
-12 |
|
rvsTable |
-60 |
См. также: Константы rvsXXX)
Зная тип элемента, вы можете получить дополнительную информацию о нём с помощью методов (методы Get***Info):
▪GetBreakInfo, GetBulletInfo, GetHotspotInfo, GetPictureInfo, GetControlInfo, GetTextInfo.
▪Для элемента любого типа можно получить дополнительные свойства: GetItemExtraIntProperty и GetItemExtraStrProperty.
▪Для элемента любого типа можно получить его тег (GetItemTag), закладку (GetItemCheckpoint)
▪Для элемента любого типа можно получить информацию о его абзаце (GetItemPara, IsParaStart, IsFromNewLine).
▪Для элемента любого типа можно получить его текст (видимый текст для текстовых элементов, название для нетекстовых) (GetItemText)
▪Для элемента любого типа можно получить объект, которым он представлен в документе (GetItem, обычно используется для таблиц)
В редакторе вы можете использовать вышеперечисленные методы, а также GetCurrentBreakInfo, GetCurrentBulletInfo, GetCurrentHotspotInfo, GetCurrentPictureInfo, GetCurrentControlInfo, GetCurrentTextInfo (методы GetCurrent***Info), и GetCurrentTag, GetCurrentCheckpoint, GetCurrentItemText.
Параметры этих методов аналогичны параметрам методов Add***Tag для добавления элементов в документ.
Следует отметить, что эти методы возвращают ссылки на изображения и компоненты, принадлежащие компоненту TRichView, а не на их копии. Пожалуйста, используйте их с осторожностью. Например, вы можете что-то нарисовать на возвращённом изображении, но не следует его уничтожать. Предпочтительный способ изменения элементов TRichView — использование методов Set***Info (или Set***InfoEd для редактора). Исключение: элементы со свойством rvepShared.
Чтобы не допустить излишнего использования системных ресурсов, TRichView может «деактивировать» некоторые рисунки (то есть сохранить их в поток и освободить память под графический объект). Первыми деактивируются те рисунки, к объектам которых давно не было обращений (как для их рисования, так и с помощью методов компонента). Поэтому вы не можете ссылку на графический объект и хранить её. См. RichViewMaxPictureCount.
Таблицу в позиции каретки (или таблицу верхнего уровня вложенности, содержащую каретку) можно получить с помощью метода GetCurrentItemEx.