Создание документа в ТРВ-Редакторе (TRichView)

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

Создание документа в ТРВ-Редакторе (TRichView)

Создание нового документа

Документ можно создать следующей последовательностью действий:

1.очистить TRichView,

2.добавить элементы в документ,

3.переформатировать и перерисовать TRichView.

Таким образом, общая структура процедуры генерации документов выглядит следующим образом:

MyRichView.Clear;
<Методы добавления содержимого>
MyRichView.Format;

 

Примечание: все методы, определённые в TRichView (за исключением собственно методов форматирования), не переформатируют документ, не перерисовывают TRichView и не вызывают событие OnChange (TRichView не имеет события OnChange, оно введено в TRichViewEdit) (viewerstyle методы быстрого изменения документа).

Группа методов для добавления элементов в конец документа является самой большой группой методов (и содержит большое количество методов для обратной совместимости).

Добавление текстовых элементов

Важно: Не передавайте строки с символами cr, lf или cr+lf, табуляцией и разрывом страницы в приведённые ниже методы, за исключением методов AddText***!

Некоторые текстовые элементы могут быть гипертекстом. Гипертекстовые элементы добавляются теми же методами, что и обычные текстовые элементы.

Методы с параметром типа String

Эти методы добавляют текст, указанный в строковом параметре. Этот параметр имеет формат:

Юникода (UTF-16) для Delphi/C++Builder 2009 и новее,

ANSI для более старых версий Delphi/C++Builder,

Юникода (UTF-8) для Lazarus.

Поскольку TRichView хранит текст в формате Unicode (UTF-16), при использовании ANSI-строк методы выполняют преобразование в Юникод.

AddNL(S, StyleNo, ParaNo, Tag) добавляет один текстовый элемент S; StyleNo – номер в коллекции стилей текста (TRichView.Style.TextStyles); ParaNo – номер в коллекции стилей абзацев (RichView.Style.ParaStyles) (если этот элемент начинает абзац) или -1 (если он продолжает абзац). При необходимости можно указать Tag.

Add(S, StyleNo) эквивалентен AddNL(S, StyleNo, -1).

AddTextNL(s, StyleNo, FirstParaNo, OtherParaNo, Tag) добавляет один или несколько текстовых элементов; первый элемент добавляется со стилем абзаца FirstParaNo, последующие со стилем абзаца OtherParaNo; элементы разделены в исходной строке s символами cr, lf or cr+lf ; s может содержать символы табуляции и разрыва страницы. При необходимости можно указать Tag.

AddFmt(FormatStr, Args, StyleNo, ParaNo) добавляет строку Format(FormatStr, Args), где Format – это функция из модуля SysUtils.

Методы с параметром типа юникодной или ANSI-строки

AddNLA, AddNLW, AddTextNLA, AddTextNLW

Добавление рисунков

Вы можете добавить изображение любого класса, поддерживаемого Delphi TBitmap, TIcon, TMetafile, TJpegImage или или классы других разработчиков.

Вам следует создать изображение, и TRichView сам удалит его при необходимости (например, при вызове RichView.Clear).

В FireMonkey вместо непосредственного использования графического класса, используется класс-обёртка, который позволяет работать с изображениями FireMonkey (TBitmap, TSkSvgBrush) так же, как с изображениями в VCL, см. TRVGraphic.

AddPicture(Name, gr, ParaNo, VAlign, Tag), где:

Name: TRVUnicodeString – название рисунка; эта строка никак не используется TRichView; строка не должна содержать символов cr и lf;

gr: TRVGraphic - изображение;

ParaNo:Integer  – номер в коллекции стилей абзацев (TRichView.Style.ParaStyles) (если этот рисунок начинает абзац) или -1 (если он продолжает абзац);

VAlign: TRVVAlign – вертикальное выравнивание рисунка;

при необходимости можно указать Tag.

Добавление интерактивных рисунков

AddHotPicture

Добавление компонентов Delphi/Lazarus

В TRichView можно добавить любой визуальный компонент Delphi, и он будет работать как обычно. Вам нужно создать компонент, и TRichView сам уничтожит его при необходимости (например, при вызове метода RichView.Clear).

AddControl(Name, ctrl,ParaNo, VAlign, Tag) добавляет компонент, так же как AddPicture добавляет рисунок.

VCL и Lazarus: TRichView использует свойство Tag вставленного компонента для своих нужд (не путайте с тегами элементов документа TRichView).

Добавление значков изображений из списка (TImageList)

AddBullet (Name, ImageIndex, ImageList, ParaNo, VAlign, Tag), где:

Name: TRVUnicodeString – название значка; эта строка никак не используется TRichView; строка не должна содержать символов cr и lf;

ImageIndex: Integer – номер изображения в TImageList;

ImageList: TCustomImageList – компонент со списком изображений; это просто указатель на компонент; TRichView не хранит у себя копии этого компонента и не освобождает память под него;

ParaNo:Integer  – номер в коллекции стилей абзацев (TRichView.Style.ParaStyles) (если этот значок начинает абзац) или -1 (если он продолжает абзац);

VAlign: TRVVAlign – вертикальное выравнивание значка;

при необходимости можно указать Tag.

Добавление интерактивных значков гипертекстовых изображений из списка (TImageList)

Интерактивные значки похожи на обычные значки, но могут иметь два изображения («обычное» и «активное») и могут быть использованы как гиперссылки.

AddHotspot(Name, ImageIndex, HotImageIndex, ImageList, ParaNo, VAlign, Tag) похож на AddBullet. Он имеет один дополнительный параметр (HotImageIndex), задающий изображение, показываемое под указателем мыши.

Добавление горизонтальных линий

AddBreak.

Добавление маркеров списка абзацев (значков или нумерации)

Маркеры списка можно добавить с помощью метода SetListMarkerInfo. В отличие от описанных выше методов, этот метод позволяет вставлять маркеры списка не только в конец документа, но и устанавливать их для существующих абзацев.

Добавление других элементов

Таблицы, текстовые метки, номера, концевые сноски, сноски, ссылки на сноски, номера страниц, числа страниц, математические выражения, нестандратные типы элементов не имеют специальных методов добавления в документа. Все они добавляются методом AddItem.

Добавление закладок

Закладки не являются элементами TRichView, но метод добавления закладки аналогичен методам добавления элементов: AddCheckpoint. См. раздел справки о закладках.

Добавление разрывов страниц

Разрыв страницы – это свойство элемента документа (флажок «этот элемент начинает новую страницу»). Только элементы, начинающие новый абзац, могут начинать новую страницу.

Пример:

var ItemNo: Integer;

 

MyRichView.AddNL('Первая страница', 0, 0);

ItemNo := MyRichView.ItemCount;

MyRichView.AddNL('Вторая страница', 0, 0);

MyRichView.PageBreaksBeforeItems[ItemNo] := True;

Добавление и вставка RVF

Добавить данные RVF можно следующими способами:

function InsertRVFFromStream(Stream: TStream; Index: Integer):Boolean;

Этот метод позволяет вставлять документ RVF. Первый элемент RVF будет иметь указанный номер. Например, если вы хотите добавить содержимое RVF в конец, напишите:

MyRichView.InsertRVFFromStream(MyStream, MyRichView.ItemCount);

InsertRVFFromStream – единственный метод TRichView (не TRichViewEdit), позволяющий вставлять произвольные элементы.

function AppendRVFFromStream(Stream: TStream; ParaNo: Integer):Boolean;

Этот метод аналогичен InsertRVFFromStream (если он используется для добавления RVF в конец документа), но он игнорирует стиль абзаца первого элемента в RVF и использует параметр ParaNo вместо него. ParaNo – это номер в коллекции стилей абзацев (RichView.Style.ParaStyles) (если элемент будет начинать абзац) или -1 (если элемент будет продолжать абзац).

Добавление содержимого другого TRichView

procedure AppendFrom(Source: TCustomRichView);

Это наиболее эффективный способ копирования содержимого одного RichView в другой. Однако элементы некоторых типов (включая вставленные компоненты и таблицы) этим методом не копируются (просто игнорируются), поэтому копирование через RVF предпочтительнее.

Загрузка

Методы для загрузки файлов и потоков (Load***) также принадлежат к этой группе методов.

Добавление с новой строки не начиная абзаца

В версии 1.2 произошло важное изменение: теперь можно добавлять элементы с новой строки, не начиная новый абзац. Новых методов для генерации документов нет (они добавлены в версии 1.3: AddTextNLW), но есть метод, влияющий на их поведение: TRichView.SetAddParagraphMode.