Рамка и фон абзацев в ТРВ-Редакторе (TRichView)

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

Рамка и фон абзацев в ТРВ-Редакторе (TRichView)

Абзацы могут иметь рамки и/или цветной фон. Эти свойства задаются в атрибутах абзаца («стиле») (см. TParaInfo). Рамка задаётся в свойстве Border, фон – в свойстве Background.

По умолчанию абзац не имеет рамок (TRVStyle.ParaStyles[i].Border.Style=rvbsNone), а его фон прозрачен (TRVStyle.ParaStyles[i].Background.Color=rvclNone).

Отступы рамки и цветной области определяются отдельно друг от друга, поэтому вы можете рисовать рамку внутри цветной области, рамки вокруг цветной области с зазором и даже создавать более интересные эффекты:

Пример рамки и фона абзаца

Пример рамки и фона абзаца

И граница, и цветная область имеют свойство BorderOffsets, которое задаёт:

для рамок: зазор между рамкой и содержимым абзаца;

для фона: цветной отступ от содержимого абзаца.

Смещение вверху, справа, внизу и слева (т.е. зазор и отступ) определяется свойствами Top, Right, Bottom, Left объекта BorderOffsets. Положительные значения увеличивают зазор (отступ). Отрицательные значения помещают рамку и края закрашенной области внутрь содержимого абзаца.

В приведенном выше примере Background.BorderOffsets = (Left: -7; Top: -7; Right: 7; Bottom: 7); значения измеряются в пикселях.

Значение BorderOffsets.Top не должно превышать значение свойства SpaceBefore того же абзаца.

Значение BorderOffsets.Bottom не должно превышать значение свойства SpaceAfter того же абзаца.

Схема: отступы рамки и фона абзаца

Схема: отступы рамки и фона абзаца

Некоторые стороны рамки могут быть скрыты свойством Border.VisibleBorders.

Горизонтальные линии используют свойства SpaceBefore и SpaceAfter 0-го стиля абзаца, но у них нет рамки и цветного фона.

Можно создать перенос строки, не начиная новый абзац. В редакторе нажмите  Shift + Enter  вместо  Enter . Элементы после каретки будут перемещены на новую строку, но при этом останутся внутри того же абзаца (внутри общей рамки и цветной области, свойства SpaceBefore и SpaceAfter применяться не будут).

См. также...

TParaInfo.Border

TRVBorder