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 dobeginItem := SRichViewEdit1.RichViewEdit.GetItem(i);if (Item is TRVTextItemInfo) thenbeginS:=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);

八、其它应用

后续。

RichView 文档 段落 项目 ITEM相关推荐

  1. 知识管理≈内容管理≈文档管理≈项目文档管理

    事情的起因有点偶然,阿杜和我聊起系统的时候,说我们的系统现在开发的还可以,就畅想了一下能否有一个桌面文档管理系统,问起原因,主要是感觉很多人不会管理自己的硬盘,不会管理自己的文档. 我听了也是感觉一振 ...

  2. Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例 spring jar 包详解spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock ...

  3. python-docx结合lxml读取word文档段落格式、字体格式等信息

    python-docx结合lxml读取word文档段落格式.字体格式等信息 最近还是在研究docx文档,搞了几天终于有点心得了.不得不说,虽然python-docx库没那么强大能直接获取样式继承的字体 ...

  4. Python读取Word文档段落或者表格

    Python解析word文档 1 .安装并导依赖包 2.word的doc格式转docx格式 3.解析word_doc文档段落.表格内容 4.word读取表格存列表封装优化,节省读取时间 1 .安装并导 ...

  5. 【项目总结】基于SpringBoot+Ansj分词+正倒排索引的Java文档搜索引擎项目总结

    文章目录 项目介绍(开发背景) 主要用到的技术点 前端 后端 Ansj分词 实现索引模块 实现Parser类 实现Index类 完善Parser类 优化制作索引速度 实现搜索模块 实现DocSearc ...

  6. Mobox项目文档管理-项目经理必备工具

    项目文档管理-项目经理必备工具 项目文档管理是项目管理中非常重要而基础的一环,存在于项目的整个生命周期之中.如果一个项目缺乏文档管理,那么它也就不是一个规范.标准的项目.文档管理在项目开发中占有十分重 ...

  7. 实例演示python-docx 读写word文档 段落、图片、表格

    python-docx 读写word文档 段落.图片.表格 简介 运行环境与配置 成果物展示 模板word 输出word python-docx库安装 Python-docx 的使用技巧 关于文档编写 ...

  8. java web部署文档_javaweb项目实施部署文档

    javaweb项目实施部署文档 一 .安装配置jdk Jdk的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.h ...

  9. HTML:基础语法,文档段落,修饰标签,特殊符号

    HTML基础语法: HTML实践代码: </!DOCTYPE html> <html> <head><title>我的第一个网页</title&g ...

最新文章

  1. chattr和lsattr命令
  2. VS2003 找不到IsProcessInJob()
  3. sqoop配置与使用
  4. gearman python 实例
  5. SSM中实现CRUD并配置输出sql语句
  6. python背诵技巧_python历史背诵
  7. SwiftUI5.x微博入门案例第1部分
  8. 关于linux用户权限的理解
  9. 从0开始:500行代码实现 LSM 数据库
  10. Kibana中的Coordinate Map地图报索引错误的问题
  11. 树莓派lnmp安装mysql_在树莓派上安装 LNMP
  12. 上科大、腾讯提出Liquid Warping GAN,实现人体动作迁移的新高度!
  13. cmd完成拷贝文件,并生成两个快捷脚本
  14. python200行代码小游戏_200 行python 代码实现 2048 游戏
  15. uva11609(组合数学,快速幂)
  16. linux 重新扫描pci设备,linux重新扫描pci总线
  17. TechEd2011之游园录(3)
  18. 创建高质量Python工程(1)-如何设计结构清晰的目录结构(转)
  19. android 中 ViewPager 的平常用法 ViewPager+ Views
  20. jQuery API/1.1.1/CSS

热门文章

  1. 安装JESS插件到Eclipse Mars
  2. 闲话 | 人生,是一场怎样的修行
  3. hihoCoder - 1272 买零食
  4. 3dsmax游戏角色头部建模教程
  5. HDU1718--Rank
  6. 温湿度传感器——DHT11学习总结
  7. 千万数据去重_基于 Flink 的百亿数据去重实践
  8. CloudStack使用KVM时设置虚拟实例的CPU型号
  9. 安装和使用IBM PowerVP和IBM AIX
  10. JS中 ?? 与 || 的区别