|
<< Нажмите, чтобы показать Содержание >> Абзацы в ТРВ-Редакторе (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);