delphi使用RichView控件 更改选择内容字体

TRichView更改选择内容字体

方法

TCustomRichViewEdit.ApplyTextStyle

procedure ApplyTextStyle(TextStyleNo: Integer);

将指定的文本样式应用于所选项目( 文本项目制表符标签项目

参数

TextStyleNo 文本样式集合中的索引(Style.TextStyles)。

如果选择为空,则此方法仅将TCustomRichViewEdit.CurTextStyleNo设置为TextStyleNo。如果选择不为空, 则该方法会更改所选内容中文本项目的样式。

如果现有文本项的Protection中的样式为rvprStyleProtect,则此方法不会更改其样式。

如果要实现“加粗”、“更改文本颜色”、“应用字体”等命令,请使用ApplyStyleConversion而不是此方法。

TCustomRichViewEdit.ApplyStyleConversion

procedure ApplyStyleConversion(UserData: Integer; Recursive: Boolean = True);

将自定义转换过程应用于所选 文本项目制表符标签项目(以及从标签项目继承的所有类型的项目)的样式。

参数

UserDataOnStyleConversion传递的值

Recursive False,不会为所选表格的单元格调用 OnStyleConversion(单个表格中的多单元格选择情况除外)。

此方法为每个选定的文本项和 当前文本样式 调用 OnStyleConversion 事件。 使用这种方法,您可以实现诸如“加粗”或“更改字体名称”之类的命令。

此方法忽略任何文本保护,即使rvprStyleProtect 包含在现有文本项的样式的Protection中,它也可以更改文本样式。 如果要保留文本保护,请在 OnStyleConversion 事件中自行检查此选项。

TCustomRichViewEdit.OnStyleConversion

在执行 ApplyStyleConversion 方法时发生。

type
  TRVStyleConversionEvent =
    procedure (Sender: TCustomRichViewEdit;
     StyleNo, UserData: Integer; AppliedToText: Boolean;
     var NewStyleNo: Integer) of object;

property OnStyleConversion:TRVStyleConversionEvent;

此事件允许您为所选文本创建文本样式的自定义转换过程。 为所有选定的文本项调用此事件,允许更改其文本样式。

实现“加粗”、“应用字体”、“更改文本颜色”等命令会很有用。

参数

StyleNo 当前文本样式(样式集合中的索引,Style.TextStyles)。

UserDataApplyStyleConversion 中作为参数传递的值。

AppliedToText True,该事件被调用用于文本项的样式转换; False,该事件被调用来转换当前文本样式 (TCustomRichViewEdit.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_*** – 用户定义的具有唯一值的整数常量; 这些常量标识命令; 它们作为 UserData 传递给ApplyStyleConversion
  • RVStyle1 – TRVStyle 组件链接到 Richview 编辑器;
  • ColorDialog1: TColorDialog;
  • FontDialog1: TFontDialog;
  • btnBold, btnItalic, btnUnderline: TSpeedButton;
  • FontName: String;
  • FontSize: Integer.
posted @ 2022-01-19 10:36  txgh  阅读(398)  评论(0编辑  收藏  举报