RichView 基本用法说明 - 图文

更新时间:2024-01-31 12:37:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、TRichView文档结构

1、TRichView文档结构由段落和Item组成,如下图:

绘图的组织形式如下图:

2、段落Pragraph

TRichView文档是通过段落进行组织的,每个段落都有自己的样式,文档内所有的段落样式作为存储为集合(RichView.Style.ParaStyles)。

在TRichView中,所有的Item都必须指定ParaNo即ParaStyles的索引;设置ParaNo=-1,将延续上个段落的样式。

段落主要设置边框和背景,包括:左缩进、右缩进、边框左偏移、边框右偏移等,如下图:

3、Item

·Item是文档中的基本绘图单元 ·Item分为文本Item和非文本Item ·Item都被组织在段落中

ParaStyle索引:标示样式 是否是段落开头标记 文档Item必须要有符合规定的属性 是否在段落中占整行 所有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必须用相同的ParaStyle 文档中的第一个Item必须是段落的开始 合法文档对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的属性 ??●属性

FontName 字体名称,字符串型,默认值='Arial' 字体大小,整数型,默认值=10 字 Size 体 Color 字体颜色,TColor型,默认为clWindowgText 属 文本样式,枚举类型fsBold、fsItalic、fsUnderline、Style 性 fsStrikeOut CharSet 对于非Unicode文本,设置字符集 BackColor 文本底色 UnderlIneColor 下划线颜色,Tcolor类型,默认为clNone 下划线样式(普通、双线、顿点…) 文 UnderlineType 附加文本样式,枚举类型rvfsOverline(上划线)、rvfsAllCaps本 SytleEx (全大写) 表 现 SubSuperScriptType 上标、下标类型 及 相对于基线的垂直位移,整数型,值是相对于文本高度的百分比,Vshift 布 只对普通文本有效,对上下标无效 局 CharScale 水平缩放,整数型,为字符宽度的百分比 属 CharSpacing 字间距,TRVSytleLength类型,单位为Sceenpixel或者twips 性 指定文字方向,TRVBidiMode类型,rvbdUnspecified(继承与段BiDiMode 落的bidi设置),rvbLeftToRight(从左到右)、rvdbRightToLeft(从右到左),默认为:rvbdUnspecified Jump 指定是否为超文本类型,布尔型,如果为True,以下属性生效 超 HoverColor 文本高亮颜色 文 HoverBackColor 文本背景 本 HoverUnderlineColor 文本下划线颜色 属 HoverEffects 超链接效果 性 JumpCursor 超链接的鼠标样式

编辑属性

??Protection

保护属性,TRVProtectOptions类型,包括以下值 普通保护 保护文本样式受ApplyTextStyle的影响,该保护被rvprStyleProtect ApplyStyleConversion不起效果,但可以手工在OnStyleConversion事件中处理 保护文本Item不会被分开设置样式,即不能通过选择文rvprStyleSplitProtect 本Item的一部分去设置文本样式 保护这个Style的文本Item不能修改,但是可以作为整rvprModifyProtect 体删除 保护这个Style的文本Item不能被整体删除,但是可以rvprDeleteProtect 修改 rvprConcateProtect 不运行文本进行样式合并 rvprRVFInsertProtect 保护文本Item中间不能通过InsertRV的方法进行插入 rvprDoNotAutoSwitch 保护文本Item不会自动切换文本样式 不允许文本Item移到到新行,即阻止在文本Item执行rvprParaStartProtect 回车 Sticking rvprSticking 不运行在设置有这个保护的两个文本Item之间插入 rvprSticking2 同上 rvprSticking3 同上 rvprStickToTop 如果文本Item在文档的最前,不允许在其之前插入 rvprStickToBottom 如果文本Item在文档的最后,不允许在其之后插入 文本导出属性 ??Options

设置导出RTF和HTML的文本样式,TRVTextOption类型

文本不保存到HTML RvteoRTFCode '{', '}', '\\' 被原样保存到RTF 文本不保存到RTF rvteoHTMLCode '&', '<', '>',和空格被原样保存到RTF 导出后,文本将隐藏,除非在RichView.Options中设置rvteoHidden 了rvoShowHidden(显示隐藏字符) 8.2、ParaStyle ParaSytle定义了段落属性,ParaSytle是 TParaInfos的集合,TParaInfo是TCustomRVParaInfo的子类,继承关系

TObject → TPersistent → TCollectionItem → TCustomRVInfo ●属性 ??·Alignment 对齐:指定段落对齐方式,TRVAlignment枚举类型(vaLeft左对齐,rvaRight右对齐,rvaCenter置中,rvaJustify两端对齐),默认为rvaLeft;

??·FirstIndent 首行缩进:定义为第一行的缩进,TRVStyleLength类型,默认为0; ??·LeftIndent 左缩进:定义为行的左缩进,TRVStyleLength类型,默认为0; ??·RightIndent 右缩进:定义为行的右缩进,TRVStyleLength类型,默认为0; ??·SpaceBefore 段前间距:TRVStyleLength类型,默认为0; ??·SpaceAfter 段后间距:TRVStyleLength类型,默认为0;

??·Border 段落边框:段落边框,TRVBorder类型,默认为none;

??·Background 段落背景:段落背景,TRVBackgroundRect类型,默认为transparent透明

??·Tabs 制表位:步进,TRVTabInfos类型,默认的步进为48;属性包括Positon(从左空白LeftMargin的距离)、Align对齐方式(左、右、中)、Leader(填充制表位的文字,默认为空)

??·LineSpacing 行间距:TRVLineSpacingValue类型,默认值为100; ??·LineSpacingType 行间距类型:TRVLineSpacingType枚举类型,默认值为rvlsPercent;

rvlsPercent LineSpacing定义为文本高度的百分比 rvlsSpaceBetween 可以通过RVStyle设定单位,这种类型的LineSpacing不能导出到RTF和HTML中 rvlsLineHeightAtLeast LineSpacing定义为最小行高,单位为RVStyle.Units rvlsLineHeightExact LineSpacing定义为行高,单位为RVStyle.Units ·BiDiMode 文本方向:同TextStyle的BiDiMode属性 ·Options 属性:段落的属性,TRVParaOption类型,默认为空 布局属性

rvpaoNoWrap 不允许自动折行 编辑和保护属性 rvpaoReadOnly 不允许编辑该样式的段落,但不能组织用户通过按回车键在段落前或段落后添加段落; 这个选项也不能阻止通过选择方式进行的整体删除。 rvpaoStyleProtect 不能通过ApplyParaSytle方法修改段落样式,不能保护通过ApplyParaStyleConversion方法进行的修改,可以在OnParaSytleConversion事件中处理 rvpaoDoNotWantReturns 在段落中阻止回车键. 打印选项 rvpaoKeepLinesTogether 这种样式的段落尽量打印在一页上 rvpaoKeepWithNext 这种样式的段落,如果样式和下一个段落相同,将打印在同一页上 rvpaoWidowOrphanControl 保留属性 ·OutlineLevel 大纲级别:定义段落的大纲级别,整数型,默认值为0,0为正文,正数定义为标题大纲级别。

8.3、ListStyle

ListStyle定义了段落列表样式,ListStyle是 TRVListInfos的集合,TRVListInfo是TCustomRVInfo的子类,继承关系

TObject → TPersistent → TCollectionItem → TCustomRVInfo ●属性

??·Levels 大纲级别:大纲级别,TRVListLevel类型;TRVListLevel包括以下属性: FirstIndent 首行缩进 LeftIndent 左缩进 布局属性 MarkerIndent 标号缩进 MarkerAlignment 标号对齐 ListType 标记类型 大纲标记属性 Font 字体 Picture 图片 ImageIndex 图像列表属性 FormatStringW 格式字符串 编号列表的起始数 列表大纲类型 rvloContinuous:预留属性 编号列表属性 rvloLevelReset:重新编号 Options rvloLegalStyleNumbering:如果Option包含了rvloLegalStyleNumbering,所有上级的罗马和字母序列将被转换成阿拉伯数字 ·OnLevelPreview 大纲预览:被应用程序用来为这种大纲样式定义预览缩略图 ●方法

??·AllNumbered:判断是否都被编号,如果大纲都是编号大纲,返回True ??·HasNumbering:判断是否有编号大纲,如果有编号大纲,返回True 9、Item的属性和方法 9.1、Text Item 文本

Text Item用来显示ANSI或Unicode字符串,主要的属性在TextStyle中进行定义; TextItem不能包含以下内容:

??■ CR 和LF(#13和#10)字符,即回车和换行 ??■ TAB(#09)tab键字符 ??■ #0字符,即空字符

??■ FF(#12)字符,即换页符

● 方法:

TCustomRichView 添加Text Item ??■ 单个Item方法:在文档尾部添加单个Ietm,并通过Sytle-No设置TextStyle和ParaNo设置ParaStyle 方法名称 参数 说明 AddNLTag s:String text item的文本 Text Item不能包含 CR 回车 LF 换行 StyleNo:Integer TextStyle的序号 TAB 步进 FF 换页 ParaNo:Integer ParaStyle的序号 Tag:Integer TextItem的Tag AddNLATag Const s:TRVAnsiString 传入Ansi格式字符串 StyleNo:Integer TextStyle的序号 ParaNo:Integer ParaStyle的序号 Tag:Integer TextItem的Tag ADDNLWTag Const s:TRVUnicodeString 传入Unicode格式字符串 StyleNo:Integer TextStyle的序号 ParaNo:Integer ParaStyle的序号 Tag:Integer TextItem的Tag AddNL 等同于 AddNLTag(…,0) 缩略版本,不带Tag标记 Add 等同于 AddNLTag(…,-1,0) 缩略版本,不带paraNo和Tag标记 AddTag AddNLTag(s,StyleNo,-1,Tag) 缩略版本,不带paraNo标记 ImageList FormatString StartFrom ??■ 多个Item方法:用于在文档上尾部添加多行text item 方法名称 参数 AddTextNL s:String text item的文本 StyleNo:Integer TextStyle的序号 FirstParaNo:Integer 第一行的ParaStyle的序号 如果=-1延续上一行 如果>0,设置新的paraStyle OtherParaNo:Integer TextItem的Tag 设置其他行的paraSytle,必须>0 AddTextNLA s:TRVAnsiString text item的文本 StyleNo:Integer TextStyle的序号 FirstParaNo:Integer 第一行的ParaStyle的序号 如果=-1延续上一行 如果>0,设置新的paraStyle OtherParaNo:Integer TextItem的Tag 设置其他行的paraSytle,必须>0 AddTextNLW s:TRVUnicodeString text item的文本 StyleNo:Integer TextStyle的序号 FirstParaNo:Integer 第一行的ParaStyle的序号 如果=-1延续上一行 如果>0,设置新的paraStyle OtherParaNo:Integer TextItem的Tag 设置其他行的paraSytle,必须>0 DefAsSingleParagraph:Boolean False:使用当前的添加段落模式 True:将#13回车和#10换行认为是行分割,而不是段落分割 ■ 修改Text Item 方法名称 参数 SetItemText ItemNo:Integer 要修改的Text item的序号 Const s:String 要修改的字符串 SetItemTextA ItemNo:Integer 要修改的Text item的序号 S:TRVAnsiString Ansi字符串 SetItemTextW ItemNo:Integer 要修改的Text item的序号 S:TRVUnicodeString Unicode的字符串 ■ 获取Text Item 方法名称 参数 GetItemText ItemNo:Integer 要修改的Text item的序号 GetItemTextA ItemNo:Integer 要修改的Text item的序号 GetItemTextW ItemNo:Integer 要修改的Text item的序号

说明 TextItem可以包含 CR 回车 LF 换行 TAB 步进 FF 换页 TextItem可以包含 CR 回车 LF 换行 TAB 步进 FF 换页 TextItem可以包含 CR 回车 LF 换行 TAB 步进 FF 换页 说明 说明 返回String 返回TRVAnsiString 返回TRVUnicodeString ■ 从文件或流添加文本 方法名称 参数 说明 LoadText Const FileName:String 文件名 StyleNo TextStyle的序号 ParaNo ParaStyle的序号 AsSingleParagraph False:使用当前的添加段落模式 True:将#13回车和#10换行认为是行分割,而不是段落分割 LoadTextW 同上 支持Unicode标记字符 LoadTextFromStream Stream:Tstream 流 LoadTextFromStreamW Stream:Tstream 流 返回TRVUnicodeString TCustomRichViewEdit 插入Text Item

??■ 单个Item方法:在光标处插入单个Ietm,插入的text item具有当前光标处的TextSytle和ParaStyle 方法名称 参数 说明 InsertStringTag s:String text item的文本 S参数不能包含:CR 回返回值:Boolean 车 LF 换行 FF 换页; Tag:Integer TextItem的Tag TAB被替换成空格,即使设置SpaceInTab=0; 插入的字符串不与周围的textitem合并,即使是有相同的textSytle和Tag InsertStringATag Const s:TRVAnsiString 传入Ansi格式字 返回值:Boolean 符串 InsertStringWTag Const s: TRVUnicodeString 传入Unicode 返回值:Boolean 格式字符串 ??■ 多个Item方法:插入具有 方法名称 参数 说明 InsertText Const text:String text item的文本 S参数可以包含 返回值:Boolean CR 回车 LF 换行 CaretBefore:Boolean=False FF 换页 Tab 步进 TextItem的Tag CaretBefore=True 表示完成操作后,光标在Item的前面 CaretBefore=False 表示完成操作后,光标在Item的后面 InsertTextA Const text:TRVAnsiString 返回值:Boolean 传入Ansi格式字符串 InsertTextW Const text: TRVUnicodeString 返回值:Boolean 传入Unicode格式字符串 修改Text Item

在编辑模式下,修改textItm的文本,或者非文本item的name 方法名称 参数 说明 SetItemTextEd ItemNo:Integer 要修改的Text item的序号 Const s:String 要修改的字符串 SetItemTextEdA ItemNo:Integer 要修改的Text item的序号 S:TRVAnsiString Ansi字符串 SetItemTextEdW ItemNo:Integer 要修改的Text item的序号 S:TRVUnicodeString Unicode的字符串 SetCurrentItemText Const s:String 修改的值 等同于 TopLevelEditor.SetItemTextEd(TopLevelEditor.CurItemNo, s) SetCurrentItemTextConst s:TRVAnsiString 修改的值 等同于 A TopLevelEditor.SetItemTextEdA(TopLevelEditor.CurItemNo, s) SetCurrentItemTextConst s:TRVUnicodeString 修改的值 等同于 W TopLevelEditor.SetItemTextEdW(TopLevelEditor.CurItemNo, s) 获取Text Item:返回当前光标出的Text Item 方法名称 参数 说明 GetCurrentItemText ItemNo:Integer 返回String 等同于 要修改的Text item的序号 TopLevelEditor.GetItemText(TopLevelEditor.CurItemNo). GetCurrentItemTextItemNo:Integer 返回TRVAnsiString A 要修改的Text item的序号 等同于 TopLevelEditor.GetItemTextA(TopLevelEditor.CurItemNo) GetCurrentItemTextItemNo:Integer 返回TRVUnicodeString W 要修改的Text item的序号 等同于 TopLevelEditor.GetItemTextW(TopLevelEditor.CurItemNo) ■ 从文件插入文本:从文件插入文本Item,并具有当前的TextStyle和ParaStyle 方法名称 参数 说明 InsertTextFromFile Const FileName:String 文件名 如果当前的textStyle是Unicode,会自动转换成Unicode

InsertTextFromFileW 同上 支持Unicode标记字符 如果当前的textStyle是ANSI,会自动转换成ANSI 9.2、Tabulators 制表位 制表位是指在水平标尺上的位置,指定文字缩进的距离或一栏文字开始之处,制表位是在文档左间距的基础上计算,通过ParaStyle的LefIndent、paraStyle的Tabs以及TRVSyle.DefTabWidth进行定义的。 9.3、Pictures 图片

Pictures item用来显示存储在Tgraphic对象中的一张图片,Delphi支持以下几种标准的图片类:

· TBitmap (stores bitmap (*.bmp), probably with transparency); · TMetafile (stores 32-bit (*.emf) or 16-bit (*.wmf) metafile);

· TIcon (stores icon; this class does not work with icons having more than 16 colors properly);

??· JpegImage (D3+; stores Jpegs (*.jpg)); ??· TGifImage (D2007+, stores Gifs (*.gif)); ??· PngImage (D2009+, stores Png (*.png));

· 另外还支持一些第三方的图片类。 Pictures item附加属性有:

??· rvepImageWidth, rvepImageHeight:拉伸图片

??· rvepTransparent, rvepTransparentMode, rvepTransparentColor:定义图片的透明度

??· rvepAnimationInterval:定义bitmap动画的时间间隔 ??· rvepMinHeightOnPage:允许将一张图片打印在多页上 ??· rvepSpacing:定义图片边距

??· rvepResizable:定义是否可以改变大小,TIcon不支持 9.4、Hot-Pictures 带超链接的图片

Hot-Picures是带有超链接的图片,属性同Pictures,主要的不同是插入Hot-Pictures的方法不同。

9.5、Breaks分页(占满整行的水平线)

Break是一条指定宽度和颜色的水平线或矩形,它总是占一行。 9.6、Controls Delphi/C++Builder控件

Controls是添加到文档上的普通的Delphi/C++Builder可视化控件,额外属性有: ??· rvepSpacing:定义控件边距

??· rvepResizable:定义是否可以改变大小 ??· rvepVisible:定义是否可以隐藏控件 9.7、Bullets 项目符号

项目符号是TimageList中的一个图片,他与段落的项目符号和列表没有关系,主要用于在文档中重复使用一张小图片。

额外属性有:

??· rvepSpacing 定义边距

9.8、Hotspots 带超链接的项目符号

HotSpots是带有超链接的Bullet Item,当获得鼠标焦点后可以改变图像。 9.9、Tables 表格

TRichView中的表格中的单元格都是一个子文档,表格可以嵌套。 额外属性有:

??· rvspImageFileName:当导出HTML文件时,用于保存背景图的文件位置 方法:

TCustomRichView 添加/获取表格 方法名称 参数 说明 AddItem Const Text:String 表格名称 Item:TcustomRVItemInfo 添加表格专用的TRVTableItemInfo GetItem ItemNo:Integer 表格的ItemNo 返回指定ItemNo的表格的 TRVTableItemInfo TCustomRichViewEdit 插入/获取光标处表格 方法名称 参数 说明 InsertItem Const Text:String 表格名称 Item:TcustomRVItemInfo 添加表格专用的TRVTableItemInfo GetCurrentItem 返回当前光标处的表格的TRVTableItemInfo GetCurrentItemEx RequiredClass:TCustomRVItemInfoClass 返回给定类型的当前光标这里是TRVTableItemInfo类 处的对象 ItemRichViewEdit:TCustomRichViewEdit 输出参数,返回保护了这个表格的编辑器或者单元格内部的编辑器,比如嵌套表格 Item:TCustomRVItemInfo 输出参数,返回当前表格的 TRVTableItemInfo TRVTableItemInfo:TRVTableItemInfo是TRichView文档的表达类,该类的实例由TRichView在运行时创建,或者在AddItem或InsertItem时创建。

TRVTableItemInfo = class(TRVFullLineItemInfo) 属性列表 属性名称 类型 说明 表格外边框属性 BorderWidth 边框宽度 TRVStyleLength 设置为0表示隐藏边框 BorderStyle 边框类型 TRVTableBorderStyle ??rvtbRaised ??rvtbLowered ??rvtbColor ??rvtbRaisedColor ??rvtbLoweredColor BorderColor 边框颜色 TColor 默认为clWindowText BorderLightColor 3D边框亮色 Tcolor 默认为clBtnHighlight VisibleBorder 边框可见性 TRVBooleanRect 默认为True、True、True、4个Boolean值,代表 True 左、上、右、下 BorderHSpacing BorderVSpacing 单元格外边框属性 CellBorderWidth CellBorderStyle CellBorderColor CellBorderLightColor 单元格间距 CellHSpacing CellVSpacing BorderHSpacing BorderVSpacing CellHPadding CellVPadding 背景 Color BackgroundImage BackgroundStyle TRVStyleLength TRVStyleLength 同上 同上 同上 同上 TRVStyleLength TRVStyleLength TRVStyleLength TRVStyleLength TRVStyleLength TRVStyleLength Tcolor TGraphic TRVItemBackgroundStyle ??rvbsColor颜色 ??rvbsStretched拉伸 ??rvbsTiled平铺 ??rvbsCentered置中 String Tcolor Tcolor Tcolor Tcolor TRVStyleLength TRVStyleLength Boolean 边框水平间距 边框垂直间距 单元格水平间距 单元格垂直间距 单元格边框水平间距 单元格边框垂直间距 单元格水平填充 单元格垂直填充 背景颜色 背景图片 背景样式 BackgroundImageFileName 边框颜色 BorderColor BorderLightColor CellBorderColor CellBorderLightColor Rules HRuleWidth HRuleColor HOutermostRule 背景外部图片文件名 边框颜色 边框高亮色 单元格颜色 单元格高亮色 水平标尺宽度 水平标尺颜色 默认值Flase 是否在表格边框和最外层单元格绘制水平标尺 垂直标尺宽度 垂直标尺颜色 默认值Flase 是否在表格边框和最外层单元格绘制垂直标尺 默认值:#13#10 默认值:#13#10 VRuleWidth VRuleColor VOutermostRule TRVStyleLength TRVStyleLength Boolean 导出 TextColSeparator TextRowSeparator BackgroundImageFileName 其他 表格列分隔符 表格行分隔符 外部背景图文件名 Options PrintOptions HeadingRowCount 方法列表 方法名称 插入行和列 InsertColsLeft InsertColsRight InsertRowsAbove InsertRowsBelow 删除行和列 DeleteSelectedCols DeleteSelectedRows 合并和分拆单元格 MergeSelectedCells 合并单元格 TRVTablePrintOption ??rvtoHalftoneBorders 设置则打印表格和单元格边框 不设置,将不打印颜色,只有黑白色 ??rvtoRowsSplit 拆分行,如果不设置,可以避免将表格打印在多个页上 ??rvtoWhiteBackground 不打印背景 Integer 默认值: rvtoHalftoneBorders rvtoRowsSplit 默认值:0 重复表头的行数 说明 在选中的单元左边插入列 在选中的单元右边插入列 在选中的单元上面插入行 在选中的单元下面插入行 删除选中列 删除选中行 执行前通过 CanMergeSelectedCells判断是否可以合并 必须在文档Formatted之后执行 参数 Count: Integer 插入的列数 Count: Integer 插入的列数 Count: Integer 插入的行数 Count: Integer 插入的行数 AllowMergeRC:Boolean =False,禁止合并 UnmergeSelectedCells 取消合并 UnmergeRows:Boolean 如果True,将每个选中的单元格拆分到RowSpan(行跨度)行中 UnmergeCols:Boolean 如果True,将每个选中的单元格拆分到ColSpan(列跨度)列中 SplitSelectedCellsHorizontally RowCount:Integer 将单元格拆分成指定拆分成行 行数 RowCount的行 SplitSelectedCellsVertically 拆分成列 其他 InsertCols 插入列 ColCount:Integer 列数 将单元格拆分成指定ColCount的列 InsertRows 插入行 DeleteCols 删除列 DeleteRows 删除行 MergeCells 合并单元格 UnmergeCells 取消合并格 Index:Integer 要插入的列前索引 Count:Integer 列数 CopyIndex:Integer 如果<>-1,指定为要复制属性的目标列序号 Index:Integer 要插入的行前索引 Count:Integer 行数 CopyIndex:Integer 如果<>-1,指定为要复制属性的目标行序号 Index:Integer 要删除的第一个列的索引 Count:Integer 要删除的列数 DecreaseWidth:Boolean 是否自动调整宽度 Index:Integer 要删除的第一个列的索引 Count:Integer 要删除的列数 DecreaseHeight:Boolean 是否自动调整高度 TopRow:Integer 起始行索引 LeftCol:Integer 起始列索引 ColSpan:Integer 合并的列数 RowSpan:Integer 合并的行数 AllowMergeRC:Boolean =False,禁止合并 TopRow:Integer 起始行索引 LeftCol:Integer 起始列索引 ColSpan:Integer 合并的列数 RowSpan:Integer 合并的行数 UnmergeRows: Boolean

=True,不将行放到RowSpan行中 UnmergeCols: Boolean =True,不将列放到RowCol行中 DeleteEmptyRows 删除所有空行 删除所有只包含了nil单元格的行 DeleteEmptyCols 删除所有空列 删除所有只包含了nil单元格的列 9.10、List Markers 段落项目符号或编号 表示段落项目符号和列表的特殊Item,属性由TRVStyle.ListStyle定义。 9.11、Labels 不能换行的类似于文本的控件

Label是类似于Text Item的非文本Item,Label不能折行,在Delphi/C++Builder 2009及后续版本中,label的文本是Unicode,之前的版本是ANSI;

其属性由TRVLabelItemInfo定义,其属性都与RVSytle中的属性有关联: ??· 显示的文本样式使用TextStyle的样式 ??· Label的光标;

??· Label的最小宽度(MinWidth属性); ??· Label的水平文本对齐 Alignment; 9.12、Numbered Sequences 编号序列

编号序列是显示数字的类似于Labels的Item,编号序列也不能折行。编号序列用于对图片、表格、公式进行编号。

其属性由TRVSeqItemInfo定义,主要有: ??· SeqName:用于定义序列名称,保证相同SeqName的值能够连续,@footnote@和@endnte@被脚注和尾注保留使用。

??· NumberType:定义编号类型,包括数字、罗马数字等。 9.13、Endnotes尾注

尾注类似与编号序列,尾注包含子文档,尾注不在TRichView插入处显示,所有尾注都在文档尾部显示和打印。 9.14、Footnotes脚注

脚注类似与编号序列,脚注包含子文档,脚注不在TRichView插入处显示,所有尾注都在文档每页的尾部显示和打印。

二、RichView中文文档

RichView组件由9个组件组成:

1.TRVStyle:主要是定义RICHVIEW样式,定义后,其它RIHCVIEW都可以引用此样式。 2.TRichView:主要用于显示文本,图像,等等

3.TRichViewEdit:主要用于编辑文本,图像,等等

4.TDBRichView:和RICHVIEW一样,但主要用于数据感之

5.TDBRichViewEdit:和RIHCVIEWEDIT一样,但主要用于数据感之 6.TRVPrint:用于控件中文档的打印 7.TRVPrintPreview:用于打印预览

8.TRVReportHelper:用于在其它控件上显示文档 9.TRVOfficeConverter:用于操作WORD文档

1.TRVStyle

这个组件在运行时是不可见的,TRVSTYLE是派生类,直接继承TCOMPONENT。如果你想显示RICHVIEW里面的文档,只用把要显示的RICHVIEW关联TRVSTYLE组件就行,(创建一个TRVSTYLE后把,RICHVEIW的STYLE属性关 联这个TRVSTLE)。同样 RichView, RichViewEdit, DBRichView, DBRichViewEdit 都可以关联这个TRVSTYLE,方法相同。如果一个TRVSTYLE关联多个组件后,当其中一个组件要删除这个TRVSTYLE后,其它的组件就不能继续使用这个TRVSTYLE,解决办法 就是一个组件关联一个TRVSTYLE。

RVSTYLE有三个主属性:

· TEXTSTYLES:主要是设置一些文本样式 · PARASTYLES:段落标题样式

· LISTSTYLES:段落标题样式列表 Color 背景色 SelColor, InactiveSelColor 选择文本的背景色 SelTextColor, InactiveSelTextColor 选择文本的颜色 DisabledFontColor 控件不可能时文本的颜色 RVSTYLE HoverColor 超文本的颜色 颜色属性 CheckpointColor 检查点虚线颜色 CheckpointEvColor 检查点事件虚线颜色 PageBreakColor 文档隔断颜色 FloatingLineColor 左右占位符颜色 JumpCursor 超文本样式 RVSTYLE 鼠标样式 LineSelectCursor 左边栏样式 FieldHighlightColor 高亮显示颜色 FieldHighlightType 高亮显示模式(有三种) LABE FootnoteNumbering 一些页脚类型 元素相关属性 FootnotePageReset 页脚模式 EndnoteNumbering 尾注类型 SelectionStyle 文档外观选择 SelectionMode 选择模式 DefUnicodeStyle 默认Unicode 文本样式 RVSTYLE 其它属性 DefCodePage ANSI <->Unicode 自动转换 LineWrapMode 文本框类型 UseSound 声音开关 SaveINI 保存 RVStyle 属性到INI文件 LoadINI 加载 RVStyle属性从INI文件 SaveReg 保存 RVStyle 属性到注册文件 RVSTYLE LoadReg 加载RVStyle 属性到注册文件 方法 SaveCSS 保存.RVStyle样式到CSS文件 SaveCSSToStream 保存.RVStyle样式为CSS文件,然后保存到流 OnDrawCheckpoint 画检查点 OnDrawPageBreak 画分隔线 RVSTYLE OnDrawParaBack 画段落背景 事件 OnDrawTextBack 画文本背景 OnApplyStyle 保存文本类型到画布 OnApplyStyleColor OnDrawStyleText OnStyleHoverSensitive 保存文本颜色到画布 指定的文本类型 重画,当鼠标移进或者移出指定的文本类型时重画样式 2.TRichView TRichView组件主要用于显示文档内容的,包括图片,表格,文字,甚至可以显示其它组件。使用之前必须要关联TRVSTYLE(前面有介绍),不关联是不能显示的。TRichView有个重要的属性集SETTINGS,里面可以设置一些重要的参数。

TRichView属性,事件,方法: · Style:关联TRVSTYLE样式 · Options:一些重要的操作 · ItemCount:文档中元素数量

· BackgroundBitmap:文档背景图片

· BackgroundStyle:文档背景图片显示样式 · Color:文档背景颜色

· FirstJumpNo:为第一个超文本增加ID号 · AddNL:增加文本元素 · AddBreakEx:增加分隔线 · AddPictureEx:增加图片

· AddHotPicture:增加热点图片 · AddControlEx:增加组件 · Add:在文本后面增加字符 · AddFmt:增加特点格式字符集 · Clear:清除文档内容

· Format, FormatTail:格式化文档内容 · Reformat:重新格式化文档

· OnJump:当光标点击超链接时发生

· OnRVMouseMove:当光标移动到超链接时发生 · GetJumpPointItemNo:跳转到指定ID号的元素

· LeftMargin, RightMargin, TopMargin, BottomMargin:左右上下边距 · MaxTextWidth:最长行(字符数) · MinTextWidth:最短行(字符数) · DocumentHeight:文档高 · VAlign:垂直效准线

· VScrollVisible:垂直滑动条开关 · HScrollVisible:平水滑动条开关 · VSmallStep:垂直滑动条滑动幅度 · OnVScrolled:垂直滑动条事件 · OnHScrolled:水平滑动条事件 · Copy:复制选择的内容到剪切板

· CopyDef:选择方式复制选择的内容到剪切板 · CopyImage:复制选择的图片到剪切板

· CopyTextA:复制选择的内容,以文本形式到剪切板

· CopyTextW:复制选择的内容,以Unicode格式到剪切板 · CopyRVF:复制选择的内容,以RVF格式到剪切板 · CopyRTF:复制选择的内容,以RTF格式到剪切板

· GetSelectedImage:返回选择的图片 · GetSelText:返回选择的文本

· GetSelTextW:以Unicode字符形式返回选择的内容 · SelectAll:全选

· SetSelectionBounds:选择指定的元素

· SelectWordAt:选择一个指定坐标上的字符 · SelectControl:选择一个可视组件 · Deselect:取消选择

· RVFOptions:一些加载和保存RVF文体的操作 · RVFWarnings:一些RVF文体阅读时的错误 · SaveRVF:保存文档为RVF格式

· SaveRVFToStream:保存文档为RVF格式,然后保存到流 · LoadRVF:加载RVF文件

· LoadRVFFromStream:从流加载RVF文件 · CopyRVF:复制RVF文档到剪切板

· InsertRVFFromStream:从流增加RVF文档

· LoadFromStream:从流加载RVF, RTF或者文本格式的文件 · LoadText:从文件中增加文本

· LoadTextW:从Unicode encoding文件中增加文本 · LoadRTF:加载RTF

· SaveHTML:保存文档为HTML格式

· SaveHTMLEx:保存文档为HTML格式。使用CSS样式 · SaveHTMLToStream, SaveHTMLToStreamEx:方法同上,只不过保存到流,不是直接保存为文档

· SaveText:保存为文本文件

· SaveTextW:保存为Unicode文件

· SaveTextToStream, SaveTextToStreamW:可以选择性的保存到流 · SaveRTF:可以选择性的保存为RTF格式

· SaveRTFToStream:可以选择性的保存为RTF格式到流 · GetItemStyle:返回一个元素的类型 · GetTextInfo:返回文本元素的信息 · GetBreakInfo:返回分隔线信息 · GetBulletInfo:返回着重号信息 · GetHotspotInfo:返回热点信息

· GetPictureInfo:返回图片或者热点图片信息 · GetControlInfo:返回组件信息

· GetItemExtraIntProperty,GetItemExtraStrProperty:返回元素额外的属性值 · GetItem:通用方法,主要用于表格

· GetItemCheckpoint:返回元素的检查点 · GetItemVAlign:返回元素位置 · GetItemTag:返回元素的标签 · GetItemText:返回元素内容

· IsParaStart:返回是否是第一个元素 · IsFromNewLine:返回是否是第一个元素 3.TRichViewEdit

TRichViewEdit主要是用于编辑文本内容,如图片,文字,表格,控件,等等。如果没

有关联RVSTYLE,TRichViewEdit是不能显示或者编辑任何内容的。

● 属性

· CurItemNo:当前元素编号 · CurItemStyle:当前元素类型

· CurParaStyleNo:当前段落样式类型编号 · CurTextStyleNo:当前文本样式编号 · EditorOptions:设置一些编辑的选项 · ReadOnly:内容是否可以编辑,或只读 · Modified:内容是否有修改

· CustomCaretInterval:自定义字符重绘时间间隔 ● 事件

· OnChange:文档内容改变时触发

· OnCurParaStyleChanged:当前段落样式改变时触发 · OnCurTextStyleChanged:当前文本样式改变时触发 · OnPaste:允许粘贴

· OnStyleConversion:改变选中文本样式 · OnParaStyleConversion:改变段落样式 · OnCaretGetOut:当字符超过边界时触发 · OnCaretMove:当字符移动后触发

· OnItemTextEdit:当一个文本类型元素的文本内容改变时 · OnSmartPopupClick:弹出菜单

· OnMeasureCustomCaret,OnDrawCustomCaret:替换字符 ● 常用方法

· ApplyParaStyle, ApplyTextStyle:保存文本样式 · ApplyStyleConversion:保存选中文本的样式 · ApplyParaStyleConversion:保存选中段落样式 · Change:文档内容改变事件

· BeginUpdate, EndUpdate:重绘/刷新

· SearchText, SearchTextA, SearchTextW:查找字符 ● 常用插入方法

· InsertText, InsertTextA, InsertTextW, InsertStringTag, InsertStringATag, InsertStringWTag:插入文本 · InsertBreak:插入一条线 · InsertBullet:插入项目符号 · InsertControl:插入组件 · InsertHotspot:插入热点 · InsertPicture:插入图片

· InsertHotPicture:插入超文本链接图片 · InsertTab:插入制表键 · InsertRVFFromFileEd, InsertRVFFromStreamEd:从文件或者流插入RVF格式的文件 · InsertRTFFromFileEd, InsertRTFFromStreamEd:从文件或者流插入RTF格式的文件 · InsertTextFromFile,InsertOEMTextFromFil:从文件插入字符 · InsertItem:常用插入元素的方法 ● 剪贴板操作(主要方法和事件) · CanPaste:是否允许从剪贴板粘贴

· CanPasteRVF:是否允许从剪贴板粘贴RVF格式内容

· CanPasteRTF:是否允许从剪贴板粘贴RTF格式内容 · CutDef:剪切到剪贴板 · Paste:粘贴

· PasteBitmap:粘贴图片

· PasteMetafile:粘贴图形元件 · PasteGraphicFile:粘贴图形元件

· PasteRVF:从剪贴板粘贴RVF格式内容 · PasteRTF:从剪贴板粘贴RTF格式内容 · PasteTextA:从剪贴板粘贴ANSI格式内容 · PasteTextW:从剪贴板粘贴UNICODE格式内容 · DeleteSelection:删除选中的内容 · SelectCurrentWord:选中当前内容 · SelectCurrentLine:选中当前行 ● 常用编辑元素方法

· SetBreakInfoEd:改变横线

· SetBulletInfoEd:改变项目符号 · SetControlInfoEd:改变组件 · SetHotspotInfoEd:改变热点 · SetPictureInfoEd:改变图片

· SetItemExtraIntPropertyEd,SetItemExtraStrPropertyEd:编辑元素属性 · SetItemTagEd:编辑元素标签

· SetItemVAlignEd:调整元素相对位置 · SetItemTextEd:改变元素名

· SetCheckpointInfoEd:编辑检查点 · RemoveCheckpointEd:删除检查点 · ResizeControl:调整组件

· AdjustControlPlacement,AdjustControlPlacement2:自动调整组件位置 ● 获取元素信息方法

· GetCurrentTextInfo:获取文本信息

· GetCurrentBreakInfo:获取线条元素信息 · GetCurrentBulletInfo:获取项目符号信息 · GetCurrentControlInfo:组件信息 · GetCurrentHotspotInfo:热点信息 · GetCurrentPictureInfo:图片信息

· GetCurrentItem,GetCurrentItemEx:未知类型元素信息

· GetCurrentItemExtraIntProperty,GetCurrentItemExtraStrProperty:返回指定元素属性值

· GetCurrentTag:返回元素标签

· GetCurrentItemVAlign:返回元素水平位置 · GetCurrentCheckpoint:返回元素检查点 · GetCurrentItemText:返回元素名

· GetCurrentLineCol:返回当前位置的行和列 ● 撤销和恢复

· UndoLimit:设置撤销缓冲区 · UndoAction:返回撤销操作 · Undo:撤销最后操作

· UndoName:返回撤销操作名 · RedoAction:返回恢复操作

· Redo redoes:恢复最后一次撤销操作 · RedoName:返回恢复操作名

· ClearUndo:清除撤销和恢复缓冲区 ● Unicode操作

· PasteTextW:从剪贴板复制UNICODE文本 · InsertTextW:插入UNICODE文本

· InsertTextFromFileW:从文件插入UNICODE文本 ● 拼写检查

· GetCurrentMisspelling:返回当前位置有错语的词 · LiveSpellingMode:拼写检查开关 ● 检查点

· SetCheckpointInfoEd:给特殊的元素增加检查点 · RemoveCheckpointEd:删除特殊元素的检查点 · GetCurrentCheckpoint:返回当前元素的检查点

· SetCurrentCheckpointInfo:增加或者编辑当前元素的检查点 · RemoveCurrentCheckpoint:删除当前元素的检查点 · InsertCheckpoint:当前位置增加检查点

· GetCheckpointAtCaret:返回当前位置的检查点 · RemoveCheckpointAtCaret:删除当前检查点

4.TDBRichView TDBRichViewEdit TRVPrint TRVPrintPreview,TRVReportHelper

TDBRichView,TDBRichViewEdit主要用于显示,编辑数据感之内容。和RichView一样,DBRichView,DBRichViewEdit如果不关联RVStyle也是不能显示任何内容的。

TDBRichView,DBRichViewEdit支持如下类型 · RVF RichView文件类型 · RTF RichView文本类型 · text 文本 · others 其它 · TRVPrint

TRVPrint主要用于打印RICHVIEW文档,运行时不可见,使用方法 1、先指定要打印的内容 2、指定页眉或页脚 3、格式化内容 4、打印或者预览 5、释放内存 ● 事件方法

· OnFormatting:当页码发生改变时触发 · OnSendingToPrinter:打印时触发

· OnPagePrepaint,OnPagePostpaint:允许在页面个重绘 · OnPrintComponent:打印组件 ● 页边距

· LeftMarginMM:左边距 · RightMarginMM:右边距 · TopMarginMM:上边距 · BottomMarginMM:下边距

这里的边距和文档编辑时边距是不同的,一个针对页面,一个针对文档。

· TRVPrintPreview:预览文档,要先关联TRVPrint,并且打印设置已经准备完毕 · TRVReportHelper:TRVReportHelper和TRVPrint相似,TRVPrint是把文档送入打印机,TRVReportHelper则是把文档送到任何canvas上显示如:屏幕,打印机,IMAGE等

· TRVOfficeConverter:TRVOfficeConverter允许在RICHVIEW中使用Microsoft Office(32位板本的)文本格式 5.ScaleRichView

ScaleRichView是一个TRichView的插件,用TRichView引擎来呈现文档,ScaleRichView上的文档其实就是一个隐藏的RICHVIEWEDIT,所以你可以像使用RIHCVIEW一样使用ScaleRichView,安装ScaleRichView之前一定要先安装TRIHCVIEW,通常在开发过程中用捆绑方式(RichView+ScaleRichView)进行开发。

ScaleRichView 主要功能介绍 1、支持所有RICHVIEW功能 2、所见即所得模式 3、快速编码

4、支持差不多120多种文档格式

5、支持打印不同文档样式,如文档编辑时为A4样式,打印时可以选择A5样式 6、页面定位

7、支持多种部署模式 8、滚动显示

ScaleRichView组件包括:

1、TSRichViewEdit:可以以所见即所得模式编辑文档,支持多种页面浏览模式,包括页面视图模式

2、TDBSRichViewEdit:和TSRichViewEdit 一样,只不过用于数据感之,也是所见即所得

3、TSclRVRuler:TSRichViewEdit的标尺,水平和垂直,继承TRVRuler 4、TSRVToolBar:工具栏

5、TSRVToolWindow:弹出式窗口,可以把放工具栏 6、TSRVPageScroll:显示文档缩略图 7、TSRVPrint:打印文档 8、TSRVPreview:浏览文档 6.TSRichViewEdit

TSRichViewEdit主要是用来处理文本内容,下面是一些常用属性和方法,事件 ● 属性

· RichViewEdit:返回一个TRichViewEdit组件,然后通过TRichViewEdit一个属性方法来操作文档,默认情况下,TSRichViewEdit使用了一个内部的TRichViewEdit,如果你想使用自定义的TRichViewEdit,只要关联TSRichViewEdit的ExternalRV属性,如果想使用自定义的TRVStyle,则只要关联其ExternalRVSYTLE就行

· RVHeader:页眉编辑器 · RVFooter:页脚编辑器

· RVNote:脚注和尾注编辑器 · PageProperty:相关页的属性 · ViewProperty:查看模式

· BackgroundProperty:背景属性

下面的一些属性提供了访问RichViewEdit的属性,用法和RichViewEdit一样,前面有讲过,这里就不讲了,属性名相同,这个属性也可适用于其它编辑器。

· AnimationMode · BiDiMode · CPEventKind · ReadOnly · RTFOptions

· RTFReadProperties · RVBackgroundBitmap · RVBackgroundStyle · RVColor

· RVEditorOptions · RVFOptions

· RVFParaStylesReadMode · RVFTextStylesReadMode · RVOptions

· SmartPopupProperties, SmartPopupVisible · TabNavigation

下面一些属性是允许在编辑时改变属性值的: · HScrollPos:设置或者得到滚动的位置

· HScrollBar,VScrollBar:显示或者隐藏滚动条 · OnHScrolled,OnVScrolled:滚动事件 · ScrolledPage:返回第一页码

· MenuHButtons,MenuHorizontal:水平菜单设置 · MenuVButtons,MenuVertical:垂直菜单设置 ● 方法

· ConvertRVToSRV,ConvertSRVToRV:允许TSRichViewEdit和RichViewEdit之间位置转换

· GetPageClientRect:返回页的位置 · GetItemBounds:返回页面元素位置 · GetCaretPosInUnits:返回当前位置 · GetPageAt:返回指定位置的页面 · GetItemAt:返回指定位置的元素

· UnitsPerInchH,UnitsPerInchV:允许单元之间的坐标转换 · FindNextHyperlink,FindPriorHyperlink:查找超链接 · FindNextCheckpoint,FindPriorCheckpoin:查找检查点 · FindNextItem,FindPriorItem:查找元素

· FindNextHeading,FindPriorHeadin:查找标题

· NextCurHyperlink,PriorCurHyperlink:选择超链接 · NextCurCheckpoint,PriorCurCheckpoint:选择检查点 · NextCurItem,PriorCurItem:选择元素

· NextCurHeading,PriorCurHeading:移动到当前的标题 · RangeSearch:指定范围查找 · FirstCurPage:光标移动第一页 · PriorCurPage:光标移动前一页 · NextCurPage:光标移动下一页 · LastCurPage:光标移动最后一页 · PrintAll:打印整个文档

· PrintCurrent:打印当前页面 · PrintRange:打印指定范围内容

· MinPrintedItemNo,MaxPrintedItemNo:允许从指定元素之间打印 · DrawPage,DrawMetafile:允许把文档显示到其它画布或者图元上 ● 事件

· OnPageFormatChanged:当 PageProperty和PageFormat属性改变发生 · OnChangeViewModeAfter:当ViewProperty属性改变时发生 · OnChangeViewModeBefore:当ViewMode属性改变时发生

· OnZoomChanged:当ViewProperty.ZoomPercent或.ZoomMode属性改变时发生 · OnHScrolled, OnVScrolled, OnPageScrolled:滚动时发生 · OnCurrentPageChange:移动到其它页面时发生 · OnPageCountChanged:文档页数发生变化时发生 · OnClickPage:单击页面后发生

· OnPaintPage:画自定义页面,如果默认方法不能完全显示时,可用此方法 · OnPaintComponent:显示控件 · OnPaint:显示其它

· OnCheckControl:枚举所以加入的控件

· OnMessageControl:允许加入的控件响应消息 · OnGetPagePos:允许自定义页的位置和顺序 ● 表格图标

先设置ViewProperty的UseTableIcons属性为TRUE,当用户把光标移动到表格上时,表格左上方会显示一个小图标,当光标移走时,图标消失,同时触发OnTableIconClick事件。 7.Table(表格)

Table是RICHVIEW里面一个比较特殊的元素,也是RICHVIEW众元素中最复杂的一种,TABLE由单元格组成,在RICHVIEW里,每个单元格相当于一个RICHVIEW文档,单元格里面可以表格等各种元素,理论上表格是可以无限嵌套,这样的结构就导致了其复杂性。

● Table属性

· BorderWidth:表的边框长度 · BorderStyle:边框样式 · BorderColor:边框颜色

· BorderLightColor:3D外观边框颜色 · VisibleBorders:边框的显示和隐藏 · CellBorderWidth:单元格边框长度 · CellBorderStyle:单元格边框样式 · CellBorderColor:单元格边框颜色

· CellBorderLightColor:3D外观单元格边框颜色 · CellHSpacing:单元格之间的水平距离 · CellVSpacing:单元格之间的垂直距离

· BorderHSpacing:表边框与表最外层单元格之间的水平距离 · BorderVSpacing:表边框与表最外层单元格之间的垂直距离 ● Color 表的背景色

· BackgroundImage:背景图 · BackgroundStyle:背景样式

· BackgroundImageFileName:在HTML中保存背景图名 ● Table方法

· InsertColsLeft:当前单元格左边增加列

· InsertColsRight:当前单元格右边增加列 · InsertRowsAbove:当前单元格上面增加行 · InsertRowsBelow:当前单元格下面增加行 · DeleteSelectedCols:删除选中列 · DeleteSelectedRows:删除选中行 · MergeSelectedCells:合并单元格 · UnmergeSelectedCells:拆分单元格

· SplitSelectedCellsHorizontally:将选中的单元格拆分成几行 · SplitSelectedCellsVertically:将选中的单元格拆分成几列 · InsertCols:指定位置增加列 · InsertRows:指定位置增加行 · DeleteCols:删除指定列 · DeleteRows:删除指定行

· MergeCells:合并指定范围内的单元格 · UnmergeCells:拆分指定范围内的单元格

· DeleteEmptyRows:删除所有带有空单元各的行 · DeleteEmptyCols:删除所有带有空单元各的列 ● TABLE用法 创建

var table:TRVTableItemInfo;

table := TRVTableItemInfo.CreateEx(RowCount,ColumnCount,RVData);

RVData是你要创建表的文档,一般是指richview.RVData或richviewedit.RVData RichView中增加表

Table.ParaNo := RichView.AddItem(, table) Paragraph Style Index 是这个表的索引值

Table name 表的名字,一个字符串,不是指这个对象名 这个方法不用在显示文档之前重新格式化。 RichViewEdit中增加表

RichViewEdit.InsertItem(, table)

这个方法是在当前位置加入表,不管光标在文档中,还是在表格或者单元格中(光标

在哪就加到哪),如果文档是只读或者处于保护状态,用这个方法后,会返回一个FALSE,如果光标在表格中,这个方法将自动释放表格

Cell用法

Cell(单元格)是表格的主属性,因为每个CELL相当于一个RICHEDIT,所以用法和RICHEDIT差不多,但要注意的事,这些用法一般只是相对于光标当前所以的位置,也就是说,如果光标在表格里,同样的方法就是对表格的作用,如果在表格外,就是对外面的RICHEDIT的作用,如果一个文档里面同时有多个表格的时候,光标在任意地方,你想往某个表格中的某个单元格输入内容时,这时就要自己判断地方了。这是因为,当光标点某个地方时,RICHEDIT实际上已经帮你判断好了位置。

那么,如何在一个文档的表格里面的指定的一个单元格里面,输入自己的内容呢?假设现在有一个文档,里面有一个表格(多个表格大家自己去想,方法一样),这个表格里面有二个单元格,我现在想在第二个单元格中输入‘我爱你’三个字,并且此时光标在任意地方,下面是最简单实现方法

for i:= 0 to itemcount -1 do begin

if getitem(i) is TRVTableItemInfo then begin

RVData:=TRVTableItemInfo(item).cells[0,1].AddNLATag('我爱你', 0, 0, ''); break; end; end;

如果此时的单元格你不知道多少个,可以用遍历表格单元格方法,如下,我要得到表格中,每个单元格的中的文字

for row := 0 to TRVTableItemInfo(item).RowCount-1 do begin for col := 0 to table.ColCount-1 do

if table.Cells[row,col]<>nil then begin

RVData := table.Cells[row,col].GetRVData;//得到第一个单元格内容

for i := 0 to RVData.ItemCount-1 do begin//开始遍历格子中的元素,和RICHEDIT一样

if (i>0) and RVData.IsFromNewLine(i) then Result := Result + #13#10; if RVData.GetItemStyle(i)=rvsTab then Result := Result + #9 else if RVData.GetItemStyle(i)>=0 then

Result := Result + RVData.GetItemText(i);//得到第一个单元格的文字 end;

Result := Result + table.TextColSeparator;//遍历第一行的所有格子,值相加 end;

Result := Result + table.TextRowSeparator;//遍历所有行的格子,值相加,最终得到每个格子的值 end;

8.ScaleRichView全部控件介绍 8.1.TSRVButton

继承自TSRVCustomControl类,其属性分别为:

· Default:布尔类型,默认FALSE,当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的 OnClick事件。

· FocusRectOffset:整型,默认3,控件边缘到聚焦虚线之间的距离。 · Glyph:TPicture类型,默认空,指定一个显示的图像。

· ModalResult:TModalResult类型,默认mrNone,模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭对话框,返回mrOk值。

· MouseBorderWidth:整型,默认2,边长。按下按钮时,指定图标和标题移动多远。 · ShowFocusRect:布尔类型,默认TRUE,显示或隐藏聚焦时的虚线。 ● 事件

· OnClick:单击触发 8.2.TSRVCheckBox

继承自TSRVCustomControl类,其属性分别为:

· AllowGrayed:布尔类型,默认FALSE,变灰状态。

· Checked:布尔类型,默认FALSE,是否选中状态,使用前AllowGrayed必须设置为TRUE。

· State:TSRVCheckBoxState类型以,默认cbUnchecked,表示复选框的当前状态.cbchecked 表示选中, cbunchecked表示未选中, cbgrayedb表示变灰状态。

8.3.TSRVComboBox

继承自TSRVCustomComboBox类,一个可以用于显示图像和提示信息的列表编辑框,所有属性和事件均继承TSRVCustomComboBox。 8.4.TSRVEdit

继承自TSRVEditControl类,文本输入框,带一个可选择弹出列表提示框。其属性分别为:

· AutoSize:布尔类型,默认true,自动调整大小。

· CharCase:TSRVEditCharCase类型,默认srvecNormal,大小字状态。 · DropDownHints:整型,默认10,定义提示显示的条目数。

· MaxLength:整型,默认0,指定可输入的最大字符长度,0为无限制。

· PasswordChar:Char类型,默认#0,指定显示的字符,设置后无输字符将用设置的字符代替显示。

· ReadOnly:布尔类型,默认FALSE,是否只读。

· Modified:布尔类型,默认空,判断文本是否修改。 · SelText:STRING类型,选择指定字符。 ● 事件

· OnChange:文本改变时发生

· OnEditHints:列表提示框显示时发生 · OnCloseHints:列表提示框关闭时发生 8.5.TSRVGroupBox

继承自TSRVCustomControl类,其属性分别为:

· BorderColor:TColor类型,默认$00B8D8D7,边条线颜色 · BorderWidth:整型,默认1,边条线宽

· CaptionOffset:整型,默认10,边条线到标题的距离 · CornersOffset:整型,默认10,边圆角大小 8.6.TSRVImagesScroll

继承自TSRVCustomControl类,用于显示图像列表,其属性分别为: · CanMoveImages:布尔类型,默认TRUE,是否可用鼠标移动图像 · CloseButton:定义每张图像的关闭按扭 · DoubleBuffered:打开双缓冲

· ImageList:连接一个用于显示的图像表 · Indent:缩进距离 · ItemHeight:图像高

· ItemIndex:选中图像的索引 · Items:图像对象 · ItemWidth:图像长 · Kind:图像放置方式

· RestrictMove:是否可以移动图像到控件外面,使用前选设置CanMoveImages为TRUE · Spacings:每张图像之间距离 · ItemBorderStyle:图像边框样式 · ItemBorderColor:图像边框颜色 · ItemColor:图像颜色

· ItemDownColor:按下后的颜色

· ItemHotColor:移动到图像上的颜色 · ItemSelectedColor:选择择后的颜色 · DecButtonWidth:按扭外观样式

· LargeChange:单击滚动条后移动的距离 · ScrollBarHeight:滚动条高度 · ScrollerPosition:滚动条位置 · ScrollingDelay:滚动条速度

· SmallChange:单击滚动条上的箭头按扭后移动的距离 ● 事件

· OnChange:图像选择时发生

· OnItemMove:二个图像位置发生变化时发生 · OnCloseItem:关闭图像时发生

· OnDrawBorder, OnDrawBackground, OnDrawItem, OnDrawCloseButton:自绘图像,CANVAS为画布,ARect指定图像位置,APaintRect重新绘图的位置,可以使用这个属性优化绘图方法。state对像状态,设置DoDefault,防止对像以默认方式绘图。 8.7.TSRVLabel

继承自TSRVGraphicControl,所有属性和事件均继承TSRVGraphicControl。 8.8.TSRVListBox

继承自TSRVCustomListBox,所有属性和事件均继承TSRVCustomListBox。 8.9.TSRVPaintBox

继承自TSRVCanvasControl,所有属性和事件均继承TSRVCanvasControl,用于提供一个画布供程序使用。 8.10.TSRVPanel

继承自TSRVCustomControl,一个泛型的面板控诉。其属性分别为: · BorderColor:边界线颜色 · BorderWidth:边界线长度

· CaptionOffset:边界到标题的距离 · CornersOffset:圆角大小 8.11.TSRVRadioButton

继承自TSRVCustomControl,单选按扭。其属性分别为: · Checked:是否选定 9.文本格式的删除

下面代码主要处理删除文档中的文本样式,处理对象包括所有的文本元素,制表符,标记列表等文本类型的元素,对于其它元素不起作用。

在使用此功能时,需要注意的是,当文档中同时存在UNICODE和非UNICODE文本编码时,或者存在不同的语言字符集的非UNICODE文本,那么此功能可能会使部分文本信息丢失,所以使用此功能时最好保证文档中的字符编码格式相同。同时,这个功能不是普通的编辑操作,因此使用后是不可以撤消的,使用前请务必清除撤消缓冲区。

Procedure RemoveFormatting(RVData: TCustomRVData; RemoveMarkers, KeepLinks: Boolean); var

i, HypertextStyleNo: Integer; UnicodeTo, UnicodeHTo: Boolean;

procedure DoRemoveFormatting(RVData: TCustomRVData); //主要实现方法 var

i, r, c, StyleNo, StyleNoTo: Integer; PB, UnicodeFrom, ThisUnicodeTo: Boolean; table: TRVTableItemInfo; begin

for i := RVData.ItemCount-1 downto 0 do begin RVData.GetItem(i).ParaNo := 0;

StyleNo := RVData.GetItemStyle(i); case StyleNo of rvsTable: begin

table := TRVTableItemInfo(RVData.GetItem(i)); for r := 0 to table.RowCount-1 do for c := 0 to table.ColCount-1 do if table.Cells[r,c]<>nil then

DoRemoveFormatting(table.Cells[r,c].GetRVData); end;

rvsListMarker:

if RemoveMarkers then begin

PB := RVData.PageBreaksBeforeItems[i]; RVData.DeleteItems(i, 1);

if i

RVData.GetItem(i).SameAsPrev := False; RVData.GetItem(i).PageBreakBefore := PB; end; end; rvsTab: if

RVData.GetRVStyle.TextStyles[TRVTabItemInfo(RVData.GetItem(i)).TextStyleNo].Jump and KeepLinks then

TRVTabItemInfo(RVData.GetItem(i)).TextStyleNo := HypertextStyleNo else begin

TRVTabItemInfo(RVData.GetItem(i)).TextStyleNo := 0; RVData.SetItemTag(i, ''); end; 1..MaxInt: begin

if KeepLinks and RVData.GetRVStyle.TextStyles[StyleNo].Jump then begin ThisUnicodeTo := UnicodeHTo; StyleNoTo := HypertextStyleNo; end else begin

ThisUnicodeTo := UnicodeTo; StyleNoTo := 0;

RVData.SetItemTag(i, ''); end;

UnicodeFrom := RVData.GetRVStyle.TextStyles[StyleNo].Unicode; RVData.GetItem(i).StyleNo := StyleNoTo;

if UnicodeFrom and not ThisUnicodeTo then begin

RVData.GetItem(i).ItemOptions:=VData.GetItem(i).ItemOptions-[rvioUni

code];

RVData.SetItemTextR(i,RVU_UnicodeToAnsi(RVData.GetStyleCodePage(0),

RVData.GetItemTextR(i)));

end else if not UnicodeFrom and ThisUnicodeTo then begin

RVData.GetItem(i).ItemOptions:=RVData.GetItem(i).ItemOptions+[rvioUn

icode];

RVData.SetItemTextR(i,RVU_AnsiToUnicode(RVData.GetStyleCodePage(0), RVData.GetItemTextR(i))); end; end; end; end; end; begin

HypertextStyleNo := 0; if KeepLinks then

for i := 0 to RVData.GetRVStyle.TextStyles.Count-1 do if RVData.GetRVStyle.TextStyles[i].Jump then begin HypertextStyleNo := i; break; end;

UnicodeTo := RVData.GetRVStyle.TextStyles[0].Unicode;

UnicodeHTo := RVData.GetRVStyle.TextStyles[HypertextStyleNo].Unicode; DoRemoveFormatting(RVData); end;

上面是主要实现方法,如果要在文档中正式使用此方法,调用下面的代码即可。

RemoveFormatting(RichViewEdit1.RVData, True, True);

NormalizeRichView(RichViewEdit1.RVData);//还原编辑器原始状态,这步很重要,主要起修复作用,可以理解为格式化

RichViewEdit1.DeleteUnusedStyles(True, True, True); RichViewEdit1.ClearUndo; RichViewEdit1.Format;

本文来源:https://www.bwwdw.com/article/24iw.html

Top