TCustomRichViewEdit.OnStyleConversion

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

TCustomRichViewEdit.OnStyleConversion

Происходит во время выполнения метода ApplyStyleConversion.

type

  TRVStyleConversionEvent =

    procedure (Sender: TCustomRichViewEdit;

     StyleNo, UserData: Integer; AppliedToText: Boolean;

     var NewStyleNo: Integer) of object;

 

property OnStyleConversion:TRVStyleConversionEvent;

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

Это может быть полезно для реализации команд вроде «сделать полужирным», «изменить шрифт» и т. п.

Более простой способ реализации операций редактирования свойств текста предоставляет компонент TRVEditHelper.

Параметры:

StyleNo – текущий стиль текста (номер в коллекции Style.TextStyles).

UserData – значение, переданное как параметр в ApplyStyleConversion.

AppliedToTextTrue, если событие вызывается для элемента документа; False, если для текущего стиля текста (CurTextStyleNo).

NewStyleNo – изначально равно StyleNo; присвойте этому параметру новое значение, чтобы изменить стиль текста.

 

Пример 1

procedure TMyForm.MyRichViewEditStyleConversion(

  Sender: TCustomRichViewEdit;

  StyleNo, UserData: Integer; AppliedToText: Boolean;

  var NewStyleNo: Integer);

begin

   if not (AppliedToText and

      (rvprStyleProtect in Style.TextStyles[StyleNo].Protection)) then

    NewStyleNo := UserData;

end;

Этот пример делает точно ту же работу, что и метод ApplyTextStyle, т.е. вызов MyRichViewEdit.ApplyStyleConversion(StyleNo) будет эквивалентен вызову MyRichViewEdit.ApplyTextStyle(StyleNo).

Как видно, ApplyStyleConversion игнорирует защиту стилей. Если вы хотите учитывать защиту, необходимо проверять её самостоятельно и не изменять защищённые стили, как в приведённом выше примере.

Пример 2

procedure TMyForm.MyRichViewEditStyleConversion(

  Sender: TCustomRichViewEdit;

  StyleNo, UserData: Integer; AppliedToText: Boolean;

  var NewStyleNo: Integer);

var FontInfo: TFontInfo;

begin

  // создание текстового стиля с нужными свойствами

  FontInfo := TFontInfo.Create(nil);

  try

    FontInfo.Assign(RVStyle1.TextStyles[StyleNo]);

    case UserData of

      TEXT_BOLD:

        if btnBold.Down then

          FontInfo.Style := FontInfo.Style+[fsBold]

        else

          FontInfo.Style := FontInfo.Style-[fsBold];

      TEXT_ITALIC:

        if btnItalic.Down then

          FontInfo.Style := FontInfo.Style+[fsItalic]

        else

          FontInfo.Style := FontInfo.Style-[fsItalic];

      TEXT_UNDERLINE:

        if btnUnderline.Down then

          FontInfo.Style := FontInfo.Style+[fsUnderline]

        else

          FontInfo.Style := FontInfo.Style-[fsUnderline];

      TEXT_APPLYFONTNAME:

        FontInfo.FontName := FontName;

      TEXT_APPLYFONTSIZE:

        FontInfo.Size     := FontSize;

      TEXT_APPLYFONT:

        FontInfo.Assign(FontDialog1.Font);

      TEXT_COLOR:

        FontInfo.Color := ColorDialog1.Color;

      TEXT_BACKCOLOR:

        FontInfo.BackColor := ColorDialog1.Color;

      // вставьте свой код сюда ....

    end;

    // поиск такого стиля (и создание, если необходимо)

    NewStyleNo := RVStyle1.FindTextStyle(FontInfo);

  finally

    FontInfo.Free;

  end;

end;

В этом примере показано, как реализовать следующие команды:

включение/отключение полужирного начертания;

включение/отключение курсива;

включение/отключение подчёркивания;

изменение имени шрифта;

изменение размера шрифта;

применение шрифта;

изменение цвета текста;

изменение цвета фона текста.

В этом коде:

TEXT_*** – заданные пользователем целочисленные константы с уникальными значениями; эти константы определяют команды и передаются в ApplyStyleConversion как UserData.

RVStyle1 – компонент TRVStyle, связанный с редактором RichView.

ColorDialog1: TColorDialog.

FontDialog1: TFontDialog.

btnBold, btnItalic, btnUnderline: TSpeedButton.

FontName: String.

FontSize: Integer.

 

См. демо-проекты:

Demos\*\Editors\Editor 2\

См. также:

OnParaStyleConversion.

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

ApplyStyleConversion.