一、TRichView文档结构
1、TRichView文档结构由段落和Item组成,如下图:
绘图的组织形式如下图:
2、段落Pragraph
TRichView文档是通过段落进行组织的,每个段落都有自己的样式,文档内所有的段落样式作为存储为集合(RichView.Style.ParaStyles)。
在TRichView中,所有的Item都必须指定ParaNo即ParaStyles的索引;设置ParaNo=-1,将延续上个段落的样式。
段落主要设置边框和背景,包括:左缩进、右缩进、边框左偏移、边框右偏移等,如下图:
3、Item
·Item是文档中的基本绘图单元
·Item分为文本Item和非文本Item
·Item都被组织在段落中
文档Item必须要有符合规定的属性 | ParaStyle索引:标示样式 |
是否是段落开头标记 | |
是否在段落中占整行 | |
所有Item都是继承与RVItem的类 | |
所有Item类型都是继承与TcustomRVItemInfo | |
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
·Item的层次
合法文档对Item的限制 | 段落中的Item必须用相同的ParaStyle |
文档中的第一个Item必须是段落的开始 | |
Breaks和Table这种整行Item必须重起一行 | |
Table单元格最少要有一个Item,默认会包含一个空的Text Item | |
5、Item的Tag属性
在RichView中的每个Item都有一个关联的Integer类型的Tag值,Tag为TRichView提供了一种能够保存额外4个字节的Integer值或指针信息的特性。RichView中的Tag作为PChar指针用于动态的进行定位。
·
如果不指定Tag,Tag=0;
·在默认模式下,即非rvoTagsArePChar选项,RichView本身不能使用tags,可以随意使用;
·如果设置了rvoTagsArePChar,tags被作为指针用于动态定位;
·CheckPoint有Tag,Item的Tag作用对于CheckPoint同样有效
·编辑器可以将tag设置为0
·TRichView有两种tag模式:Tags store Integers(储存为4字节的Integer值)和Tags Store String(tag作为指针存储,例如可以讲Url在tag中存储时,使用这种模式)
Tag的Pchar模式
·当删除items时将清空tag字符串的内容
·在内部将Tag当做字符串进行比较
·
在RVF中tags将保存为字符串
当RichViewEdit需要复制Tag时(比如:通过回车将当前行分为2行),编辑器将Tag的指针指向同一个字符串。
所有的添加Item(AddXXX)的方法都有AddXXXTag的替代方法,将Tag作为方法的最后一个参数,通过StrNew或StrAlloc函数或0(nil)转换成Integer作为参数。
例如:MyRichView.AddNLTag('Example',0,0,Integer(StrNew('Tag Example')));
6、创建文档
TRichView创建文档的方式,分为3步:1、清空TRichView → 2、添加Item → 3、重新格式化和重绘RichView
添加的类型包括:
1、添加Text Item
2、添加图片
3、添加热点图片
4、添加Delphi控件
5、添加项目符号
6、添加水平线
7、添加列表标记(段落列表和编号列表)
8、添加表格
9、添加标签
10、添加尾注和脚注
11、添加自定义Item
12、添加CheckPoint
13、添加分页
14、添加或插入 RVF流
15、添加其他RichView对象的内容
7、TRichView和TRichViewEdit
TRichView有三组方法修改文档,TRichView的特点是不需要文档进行格式化:
1、在文档尾部添加Item
2、根据给定的索引,修改Item(赋值的方式)
3、直接从文件或流中读取RVF
TRichViewEdit有4组方法修改文档
1、TRichView的所有方法
2、在当前光标出插入Item
3、修改光标处修改Item(编辑的方式)
4、通过额外的方法修改给定索引的Item
TRichViewEdit的特点是
·文档必须是格式化过的
·修改文档后,reformat方法会自动调用
·如果文档是只读的,则不能修改
·文档实现text和paragraphs样式的保护设置
·可以生成Onchage事件
·修改都记录在Undo和Redo列表中
8、TRVStyle
TRVStyle是控制RichView可视化表现的运行时非可视化控件,RVStyle的三个属性
TextStyle 文本样式集合(TfontInfo的集合)
ParaStyle 段落样式集合 (TParaIno的集合)
ListStyle 段落列表样式集合(TRVListInfo的集合)
8.1、TextStyle:TextStyle定义了字体以及其他文本特性。
TextSytle是 TfontInfo的集合,TfontInfo是TCustomRVFontInfo的子类,继承关系
TObject → TPersistent → TCollectionItem → TCustomRVInfo → TCustomRVFontInfo
●属性
·Unicode 定义文本的编码格式为UTF-16格式或ANSI格式
True:文本为Unicode编码格式(UTF-16,WideString);
False:ANSI编码格式,对应的字符集通过Charset属性设置
在Delphi 2009版本后默认值是True,老版本的Delphi默认值是False;所以Delphi2007要修改默认值为Unicode;
·NextStyleNo 当回车后显示的TextSytle的索引号
如果NextSytleNo =-1,则回车后新增的段落将沿用回车前那个段落的text Style
默认值为-1,即继承上一个段落的Text Style;
●方法
·IsEqual 判断两个TextStyle是否相同
·Assign 将一个TextSytle赋值给另一个TextStyle
继承于TCustomRVFontInfo的属性
●属性
字 体 属 textstyle性 | FontName | 字体名称,字符串型,默认值='Arial' |
Size | 字体大小,整数型,默认值=10 | |
Color | 字体颜,TColor型,默认为clWindowgText | |
Style | 文本样式,枚举类型fsBold、fsItalic、fsUnderline、fsStrikeOut | |
CharSet | 对于非Unicode文本,设置字符集 | |
文 本 表 现 及 布 局 属 性 | BackColor | 文本底 |
UnderlIneColor | 下划线颜,Tcolor类型,默认为clNone | |
UnderlineType | 下划线样式(普通、双线、顿点…) | |
SytleEx | 附加文本样式,枚举类型rvfsOverline(上划线)、rvfsAllCaps(全大写) | |
SubSuperScriptType | 上标、下标类型 | |
Vshift | 相对于基线的垂直位移,整数型,值是相对于文本高度的百分比,只对普通文本有效,对上下标无效 | |
CharScale | 水平缩放,整数型,为字符宽度的百分比 | |
CharSpacing | 字间距,TRVSytleLength类型,单位为Sceenpixel或者twips | |
BiDiMode | 指定文字方向,TRVBidiMode类型,rvbdUnspecified(继承与段落的bidi设置),rvbLeftToRight(从左到右)、rvdbRightToLeft(从右到左),默认为:rvbdUnspecified | |
超 文 本 属 性 | Jump | 指定是否为超文本类型,布尔型,如果为True,以下属性生效 |
HoverColor | 文本高亮颜 | |
HoverBackColor | 文本背景 | |
HoverUnderlineColor | 文本下划线颜 | |
HoverEffects | 超链接效果 | |
JumpCursor | 超链接的鼠标样式 | |
编辑属性
Protection
保护属性,TRVProtectOptions类型,包括以下值
普通保护 | |
rvprStyleProtect | 保护文本样式受ApplyTextStyle的影响,该保护被ApplyStyleConversion不起效果,但可以手工在OnStyleConversion事件中处理 |
rvprStyleSplitProtect | 保护文本Item不会被分开设置样式,即不能通过选择文本Item的一部分去设置文本样式 |
rvprModifyProtect | 保护这个Style的文本Item不能修改,但是可以作为整体删除 |
rvprDeleteProtect | 保护这个Style的文本Item不能被整体删除,但是可以修改 |
rvprConcateProtect | 不运行文本进行样式合并 |
rvprRVFInsertProtect | 保护文本Item中间不能通过InsertRV的方法进行插入 |
rvprDoNotAutoSwitch | 保护文本Item不会自动切换文本样式 |
rvprParaStartProtect | 不允许文本Item移到到新行,即阻止在文本Item执行回车 |
Sticking | |
rvprSticking | 不运行在设置有这个保护的两个文本Item之间插入 |
rvprSticking2 | 同上 |
rvprSticking3 | 同上 |
rvprStickToTop | 如果文本Item在文档的最前,不允许在其之前插入 |
rvprStickToBottom | 如果文本Item在文档的最后,不允许在其之后插入 |
文本导出属性
Options
设置导出RTF和HTML的文本样式,TRVTextOption类型
RvteoRTFCode | 文本不保存到HTML '{', '}', '\' 被原样保存到RTF |
rvteoHTMLCode | 文本不保存到RTF '&', '<', '>',和空格被原样保存到RTF |
rvteoHidden | 导出后,文本将隐藏,除非在RichView.Options中设置了rvoShowHidden(显示隐藏字符) |
8.2、ParaStyle
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论