Получение элементов документа ТРВ-Редактора (TRichView)

<< Нажмите, чтобы показать Содержание >>

Получение элементов документа ТРВ-Редактора (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.