RichView 文档 段落 项目 ITEM

95 篇文章 0 订阅
24 篇文章 2 订阅

RichView 文档 段落 项目 ITEM

    一、ITEM对象

1、TCustomRVItemInfo是TRichView文档中所有项目的基本类型。

2、除TCustomRVItemInfo外,下列类型都可以构成ITEM:

     3、组成ITEM对象之间的继承关系

     

    二、ITEM是构成文档的基本要素

     1、Item是文档中的基本绘图单元

     2、Item分为文本Item和非文本Item

     3、Item在文档中,0至ItemCount-1序列中,依据连续的ITEN的ParaSytle值(相同),组成一个段。(Text中不得有造成换页的字符)

注意:组成段的条件:

         4、下列对象可以单独组成一个ITEM

·Text 文本

·Tabulators 制表位

·Pictures 图片

·Hot-Pictures 带超链接的图片

·Break 分页(占满整行的水平线)

·Controls Delphi/C++Builder控件

·Bullets 项目符号

·Hotspots 带超链接的项目符号

·Tables 表格

·List Markers 段落项目符号或编号

·Labels 不能换行的类似于文本的控件

·Numbered Sequences 编号序列

·Endnotes尾注

·Footnotes脚注

·Custom Item 自定义Item

     5、Tag

     每个Item都关联一个Tag值旧版本中它是Integer类型的,新版本它是String类型。

    Tag的功能就是方便后续的索引查找。

     三、文档中的段落和ITEM

     文档的结构,通常我们将文档习惯由段落组成。

    在RichEdit中,段落仅是若干ITEM的组合,这个组合的特点,就是所有ITEM具有相同的ParaStyles属性(ParaNo编号),且最后一个ITEM是独立组构一行的对象,如果是Text最后一个字符(隐藏)是换行符。

      1、 段落就是由文字、图像或其它可以构成一行文本的队列排列(对象)组合体。注意,它不能包含构成换行或独立占居一行的对象要素。

      2、段落中的文字,不能包含:CR和LF(#13和#10)字符回车和换行),TAB(#09)tab键字符 #0字符空字符)、 FF(#12)换页字符。因为这些字符,有的可以单独组建一个ITEM,构成换行(段落)。

      3、当段落只有一个ITEM(字符串)。当字符串中插入其它要素,如IMAGE,该段落就由多个ITEM组成。

      4、在文档中,我们不用刻意构建段落,只要一组ITEM,可以构成类似一行字符串,且只有最后一个ITEM中包含换行要素。这就自然形成一个段落。

     见下图:这是6个段落的文档,但有8个ITEM

       首行标题,编号1是一个居中文本ITEM。

       第二段,编号2至4由三个ITEM构成一个段。编号2和4是文本,编号3是插入一个Image。

       第三段至第五段,编号5-7,都是一个ITEM,构成一个段落。

       第六段,由是空串(一个换行符),组成一个ITEM。

       上述文档中,有8个ITEM,有6个段落。理解段落与ITEM之间关系了吗?

       注意:组成段落中ITEM的ParaStyles( 段落标题样式) 要一样。

      看下图:

       这个文档,由代码生成,标题的“作品中的”和“词句”是二次AddNL,虽然它们的ParaStyles和 TextStyles一样的,但是分别AddNL,二者各占用一个ITEM。标题的ItemCount=5。

       但是,将该文档保存文件中,再读入时,“作品中的"和“词句”,就合并一个ITEM了,显示ItemCount=4。

      注意:同一个段落中的文字,由于字体、尺寸、字体颜色不同,分别为各自的ITEM。

      上图中,第一段落,有5个ITEN,分别是:§1-1、 行政、查房、制度、5(上标)。

      还有一种情况,要注意:我们在使用AddNL方法时,例如:

  SRichViewEdit1.RichViewEdit.AddNL('第一句',0,0);             
  SRichViewEdit1.RichViewEdit.AddNL('第二句',0,-1);           //  -1 表示与前段落合并
  SRichViewEdit1.RichViewEdit.AddNL('第三句',0,-1);           //  -1 表示与前段落合并

       上述三个字符串,文档生成后,三个字符串都在一个段落里,但三者独立建立一个ITEM。只有保存文档数据后,再次读入后中,这三个ITEM,合并一个ITEM。这一点,编程时要注意。

      2、访问文档中的ITEM

property ItemCount: Integer;

     ItemCount是文档中的ITEN总数,实际操作:

  for i := SRichViewEdit1.RichViewEdit.ItemCount - 1 downto 0 do
  begin
    Item := SRichViewEdit1.RichViewEdit.GetItem(i);
    if (Item is TRVTextItemInfo) then
    begin
      S:=Item.ItemText;              // 文本
    end;
  end;

    通过循环可以访问全体ITEM。

      四、加入ITEM主要方法

AddNL           添加一个文本项;

AddBreak      添加了断线(水平线);

AddBullet      添加bullet(图片来自ImageList);

AddHotspot    添加热点(图片来自ImageList -超文本链接);

AddPicture     添加图片;

AddHotPicture  增加图片-超文本链接;

AddControl         添加Delphi/ c++ Builder控件;

AddTab              添加制表机;

AddItem             用于追加条目的通用方法(通常用于表);

AddCheckpoint  添加与下一个添加的物品相关联的检查点。

      五、修改ITEM

      1、获取文本

procedure SetItemTextEd(ItemNo: Integer; const s: String);
procedure SetItemTextEdA(ItemNo: Integer; const s: TRVAnsiString);
procedure SetItemTextEdW(ItemNo: Integer; const s: TRVUnicodeString);

     2、设置文本

procedure SetItemTextEd(ItemNo: Integer; const s: String);
procedure SetItemTextEdA(ItemNo: Integer; const s: TRVAnsiString);
procedure SetItemTextEdW(ItemNo: Integer; const s: TRVUnicodeString);

      参数:

          ItemNo    Item的序号

          S             文本字符   

      六、删除ITEM

procedure DeleteItems(FirstItemNo, Count: Integer);

      参数:

          FirstItemNo   从0到ItemCount-1,删除的第一个ITEM

          Count          删除TEM的数量

        七、插入ITEM

procedure SetItemTextEd(ItemNo: Integer; const s: String);
procedure SetItemTextEdA(ItemNo: Integer; const s: TRVAnsiString);
procedure SetItemTextEdW(ItemNo: Integer; const s: TRVUnicodeString);

        八、其它应用

        后续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值