Абзацы в ТРВ-Редакторе (TRichView)

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

Абзацы в ТРВ-Редакторе (TRichView)

Абзацы

Документы TRichView организованы в абзацы. Каждый абзац имеет свои атрибуты («стиль»), задаваемые индексом в коллекции стилей абзацев (RichView.Style.ParaStyles).

Список свойств, доступных для абзацев, см. в классе TParaInfo (TParaInfo – это класс элементов в коллекции стилей абзацев).

Разрывы строк внутри абзацев

(Начиная с версии 1.2) Вы можете переместить элемент на новую строку в пределах того же абзаца (нажмите  Shift + Enter  вместо  Enter ). Визуально такие переносы строк отличаются от переносов абзацев следующим образом:

FirstIndent (отступ первой строки) не применяется к первой строке после переноса;

не применяется интервал между этой строкой и предыдущей строкой (SpaceBefore и SpaceAfter);

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

Указание атрибутов абзаца при создании документа

Все методы TRichView для добавления элементов имеют параметр ParaNo. Он может принимать следующие значения:

ноль или положительное значение: индекс в коллекции стилей абзаца, если этот элемент должен начать новый абзац;

-1, если этот элемент должен продолжить абзац (пожалуйста, не добавляйте элементы с ParaNo=-1 после горизонтальных линий или таблиц).

Горизонтальные линии не имеют стиля абзаца, поэтому метод AddBreak не имеет параметра ParaNo. Но значения SpaceBefore и SpaceAfter нулевого стиля абзаца добавляются к интервалам всех горизонтальных линий.

Эти методы:

procedure AddNL(s, StyleNo, ParaNo, Tag);

procedure AddFmt(FormatStr, Args, StyleNo, ParaNo);

procedure AddTextNL(s, StyleNo, FirstParaNo, OtherParaNo,

  DefAsSingleParagraph, Tag);

procedure AddPicture(Name, gr, ParaNo, VAlign, Tag);

procedure AddHotspot(Name, ImageIndex, HotImageIndex,

  ImageList, ParaNo, VAlign, Tag);

procedure AddBullet(Name, ImageIndex, ImageList, ParaNo, VAlign, Tag);

procedure AddControl(Name, ctrl, ParaNo, VAlign, Tag);

procedure Add(s, StyleNo); // то же что AddNL(s, StyleNo, -1).

См. также: создание документа, типы элементов документа.

См. также методы TRichView:

function LoadText(FileName, StyleNo, ParaNo, AsSingleParagraph,

  CodePage):Boolean;

function LoadTextW(FileName, StyleNo, ParaNo,

  DefAsSingleParagraph):Boolean;

function AppendRVFFromStream(Stream, ParaNo):Boolean;

function IsParaStart(ItemNo): Boolean;

function IsFromNewLine(ItemNo): Boolean;

function GetItemPara(ItemNo): Integer;

Обтекание текстом элементов, выровненных по левому и правому краю

Некоторые элементы документа (например, рисунки) могут быть выровнены по левому или правому краю (см. TRVVAlign). Для таких элементов в месте их вставки остается невидимый заполнитель; сам элемент размещается с указанной стороны. Если элемент находится в начале строки, он размещается на её уровне; в противном случае он размещается ниже этой строки.

Абзацы обтекают изображения, выровненные по краю. Вы можете запретить обтекание элементов, выровненных по левому и/или правому краю, используя свойства ClearLeft и/или ClearRight.

Редактирование

В TRichViewEdit есть группа методов Insert***, которые вставляют новые элементы в позицию каретки, используя текущий стиль абзаца. Обычно, при реализации редактора на основе TRichViewEdit, необходимо предоставить интерфейс для отображения и изменения текущего стиля абзаца. Это можно сделать с помощью ComboBox с названиями стилей, кнопок на панели инструментов и/или сочетаний клавиш.

property CurParaStyleNo: Integer;

– индекс текущего (в позиции каретки) стиля абзаца;

Когда пользователь перемещает каретку в абзац с другим стилем, генерируется событие OnCurParaStyleChanged, в котором можно выбрать другой элемент в выпадающем списке стилей или отметить кнопки на панели инструментов.

procedure ApplyParaStyle(ParaStyleNo: Integer);

Метод ApplyParaStyle применяет только один стиль абзаца ко всем выбранным абзацам. Этот метод не позволяет реализовать более сложные команды, такие как «увеличить отступы», «выровнять по правому краю» и т. д. Для реализации таких команд используйте

procedure ApplyParaStyleConversion(UserData: Integer);

См. также...

Рамка и фон абзацев