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