• RichView TRVStyle 模板样式的设置与使用


    RichView TRVStyle  模板样式设置与使用 

        一、RichEdit的Style
        Style四个重要的属性:
        1、TextStyles[TextNo]
        默认有5个:

    序号  名称 
    0: Normal text Arial
    1: Heading Arial
    2: Subheading Arial
    3: Keywords Arial
    4: Jump 1 Arial
    5: Jump 2 Arial

        2、ParaStyles[ParaNo]
        默认有2个:
    序号  名称 
    0: Paragraph Style 0
    1: Centered 0

        3、StyleTemplates[StyleNo]


        默认有11个:
    序号  名称 
    0 Normal
    1 heading 1
    2 heading 2
    3 heading 3
    4 Hyperlink
    5 header
    6 footer
    7 footnote reference
    8 endnote reference
    9 footnote text
    10 endnote text

         4、MainStyle
        默认有0个(未使用):

        二、详细说明
        1、TextStyles[TextNo]和ParaStyles[ParaNo]作为样式,TextNo和ParaNo,不是配套使用的。仅供用户在使用AddNL等函数调用时使用:

      RVE.AddNL(Text, TextNo, ParaNo);   

           实际上,TextStyles[TextNo].StyleName 和 ParaStyles[ParaNo].StyleName, 在 TextStyles 和 ParaStyles 用于表示任意格式时没有多大意义,我们可以简单地忽略它们(可能最好将它们保留为空,以防止保存不必要的XML/RVF 文件中的信息)。

        2、StyleTemplates[StyleNo],才是软件真实的样式,它0-StyleNo,都定义TextStyles和ParaStyles,使用统一的Name。
    StyleTemplates[StyleNo].Name
        代码中,完全可以忽略TextStyles[TextNo]和ParaStyles[ParaNo],直接使用StyleTemplates[StyleNo]。

    1.   rve.AddNL(S1,
    2.     MakeTextStyle(rvs, nil, rvs.StyleTemplates[0]),
    3.     MakeParaStyle(rvs, rvs.StyleTemplates[0]));

        比如,当您将某些格式(例如,将文本设为斜体)应用到由某种文本样式格式化的文本时,可能会在现有文本样式的基础上创建新的文本样式,并且此新样式会继承现有样式的所有未修改属性,包括其样式名称。因此,在编辑操作中添加样式时,StyleName[No] 不能用于识别 TextStyles 和 ParaStyles。如果您使用 StyleTemplates[StyleNo],这时样式模板的名称才有实际意义。

         三、实际意义
         1、TextStyles[TextNo]和ParaStyles[ParaNo]作为独立单一文档的样式。比如:一篇文档有7个文本的样式,有4种段落的样式。你就可以设置0-6个文字样式,设置0-3个段落样式。它是个性样式的调用。

      RVE.AddNL(Text, TextNo, ParaNo);   

       

         2、通过StyleTemplates建立行业或单元(或个人),统一规范的样式模板。创建文档时,统一使用StyleTemplates。

    1.   rve.AddNL(S1,
    2.     MakeTextStyle(rvs, nil, rvs.StyleTemplates[0]),
    3.     MakeParaStyle(rvs, rvs.StyleTemplates[0]));

        四、TextStyles和ParaStyles的建立
        1、对原样式修改

    1. with RVHeader.Style.TextStyles[0] do begin
    2. FontName:='宋体'; // 字体名称;
    3. Size:=10; // 字体大小
    4. Color:= clBlack; // 文本颜色;
    5. Style:=[]; // 文本样式(粗体,斜体,下划线,删除线)
    6. Charset:=DEFAULT_CHARSET; // 字体字符集(用于非unicode文本样式)。
    7. end;
    8. with RVHeader.Style.ParaStyles[0] do begin
    9. FirstIndent:=0; // 段落第一行的缩进,用LeftIndent进行总结;
    10. LeftIndent:=0; // 左边缘缩进;
    11. RightIndent:=0; // 右边缘的缩进;
    12. SpaceBefore:=0; // 段落上方间隔;
    13. SpaceAfter:=0; // 段落下方的空格;
    14. LineSpacing:=200; // 200%
    15. end;
    16. or
    17. RichView.Style.TextStyles.Items[0].FontName:='Monotype Corsiva';
    18. RichView.Style.TextStyles.Items[0].Size:=15;
    19. RichView.Style.TextStyles.Items[0].Color:=clBlack;
    20. RichView.Style.TextStyles.Items[0].Style:=[];
    21. RichView.Style.ParaStyles.Items[0].Alignment:=rvaJustify;
    22. RichView.Style.ParaStyles.Items[0].LineSpacing:=100;

        2、创建新的样式

    1. RVStyle1.ParaStyles.Clear;
    2. with RVStyle1.ParaStyles.Add do begin
    3. StyleName := 'Paragraph 1';
    4. Alignment := rvaLeft; // 段落进行对齐( left, right, center, justify or distribute)
    5. LastLineAlignment:=rvaLeft; // 下一行段落进行对齐(左对齐,右对齐,居中对齐,对齐或分配);
    6. FirstIndent:=0; // 段落第一行的缩进
    7. LeftIndent:=0; // 左边缘缩进;
    8. RightIndent:=0; // 右边缘的缩进;
    9. SpaceBefore:=5; // 段落上方间隔;
    10. SpaceAfter:=5; // 段落下方的空格;
    11. Border:=:bsNone; // 无边框
    12. end;
    13. with RVStyle1.ParaStyles.Add do begin
    14. StyleName := 'Paragraph 2';
    15. Alignment := rvaCenter; // 段落进行对齐( left, right, center, justify or distribute)
    16. LastLineAlignment:=rvaLeft; // 下一行段落进行对齐(左对齐,右对齐,居中对齐,对齐或分配);
    17. FirstIndent:=0; // 段落第一行的缩进
    18. LeftIndent:=0; // 左边缘缩进;
    19. RightIndent:=0; // 右边缘的缩进;
    20. SpaceBefore:=5; // 段落上方间隔;
    21. SpaceAfter:=5; // 段落下方的空格;
    22. Border.Style:=rvbSingle; // 有边框
    23. Border.VisibleBorders.Top:=True; // 边框是否显示
    24. Border.VisibleBorders.Left:=False;
    25. Border.VisibleBorders.Right:=False;
    26. Border.VisibleBorders.Bottom:=True;
    27. end;

        五、StyleTemplates模板样式的创建
        1、对原样式的修改

        2、重新建立StyleTemplates    六、找到指定名称样式的序号

    1. var
    2.   ParaNo, StyleNo: Integer;
    3.   HeadingStyleTemplate: TRVStyleTemplate;
    4. ...
    5.   HeadingStyleTemplate := RVStyle1.StyleTemplates.FindItemByName('heading 1');
    6.   ParaNo := MakeParaStyle(RVStyle1, HeadingStyleTemplate);
    7.   StyleNo := MakeTextStyle(RVStyle1, nil, HeadingStyleTemplate);
    8.   RichViewEdit1.AddNL('This is Heading 1', StyleNo, ParaNo);

  • 相关阅读:
    深度学习之GPU显存与利用率 浅析小结
    项目导入Flowable依赖会导致mybatis依赖报错
    多商户商城系统功能拆解20讲-平台端分销概况
    ClickHouse进阶(十七):clickhouse优化-写出查询优化
    大数据Hadoop之——Hadoop 3.3.4 HA(高可用)原理与实现(QJM)
    智能农业技术:物联网、无人机与机器人引领的绿色革命
    代码随想录算法训练营第二十九天| LeetCode491. 递增子序列、LeetCode46. 全排列、LeetCode47. 全排列 II
    基于springboot+vue共享充电宝管理系统
    c++ try catch
    前端Vue怎么获取登录的用户名或用户id
  • 原文地址:https://blog.csdn.net/lyhoo163/article/details/125623066