• 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.
  • 相关阅读:
    try catch在for循环外面还是里面
    Java中==与equals的区别及理解
    微信公众号必须关注此测试号,错误码:10006
    微信公众号自定义菜单与启用服务器配置冲突(图文消息、链接及文本回复)
    一不小心写了个免费的跨平台网络考试培训网教系统
    ASP.NET Core利用拦截器 IActionFilter实现权限控制
    用ASP.NET Core2重写了一款网络考试培训的免费软件
    ASP.NET Core2实现静默获取微信公众号的用户OpenId
    ASP.NET Core2基于RabbitMQ对Web前端实现推送功能
    .NET Core2使用Azure云上的Iot-Hub服务
  • 原文地址:https://www.cnblogs.com/txgh/p/15821258.html
Copyright © 2020-2023  润新知