delphi 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文档
9大类详细介绍:
1、TRVStyle :这个组件在运行时是不可见的,TRVSTYLE是派生类,直接继承TCOMPONENT。如果你想显示RICHVIEW里面的文档,只用把要显示的RICHVIEW关联TRVSTYLE组件就行,(创建一个TRVSTYLE后把,RICHVEIW的STYLE属性关 联这个TRVSTLE)。同样 RichView, RichViewEdit, DBRichView, DBRichViewEdit 都可以关联这个TRVSTYLE,方法相同。如果一个TRVSTYLE关联多个组件后,当其中一个组件要删除这个TRVSTYLE后,其它的组件就不能继续使用这个TRVSTYLE,解决办法就是一个组件关联一个TRVSTYLE。
RVSTYLE有三个主属性:
(1)TEXTSTYLES– 主要是设置一些文本样式;
(2)PARASTYLES– 段落标题样式
(3)LISTSTYLES–段落标题样式列表
RVSTYLE颜色属性:
.Color – 背景色;
.SelColor, InactiveSelColor – 选择文本的背景色;
.SelTextColor, InactiveSelTextColor – 选择文本的颜色;
.DisabledFontColor – 控件不可能时文本的颜色.
.HoverColor – 超文本的颜色;
.CheckpointColor –检查点虚线颜色;
.CheckpointEvColor – 检查点事件虚线颜色;
.PageBreakColor – 文档隔断颜色;
.FloatingLineColor – 左右占位符颜色
RVSTYLE:鼠标样式;
.JumpCursor – 超文本样式
.LineSelectCursor – 左边栏样式.
LABEL元素相关属性
.FieldHighlightColor – 高亮显示颜色.
.FieldHighlightType –高亮显示模式(有三种).
.FootnoteNumbering – 一些页脚类型.
.FootnotePageReset – 页脚模式.
.EndnoteNumbering – 尾注类型.
RVSTYLE其它属性;
.SelectionStyle – 文档外观选择;
.SelectionMode – 选择模式;
.DefUnicodeStyle – 默认Unicode 文本样式;
.DefCodePage – ANSI <->Unicode 自动转换;
.LineWrapMode 文本框类型;
.UseSound. 声音开关
RVSTYLE方法;
.SaveINI 保存 RVStyle 属性到INI文件;
.LoadINI 加载 RVStyle属性从INI文件;
.SaveReg 保存 RVStyle 属性到注册文件;
.LoadReg 加载RVStyle 属性到注册文件.
.SaveCSS 保存.RVStyle样式到CSS文件
.SaveCSSToStream.保存.RVStyle样式为CSS文件,然后保存到流
RVSTYLE事件
.OnDrawCheckpoint 画检查点;
.OnDrawPageBreak – 画分隔线;
.OnDrawParaBack – 画段落背景;
.OnDrawTextBack – 画文本背景;
.OnApplyStyle – 保存文本类型到画布;
.OnApplyStyleColor – 保存文本颜色到画布;
.OnDrawStyleText – 指定的文本类型;
.OnStyleHoverSensitive –重画,当鼠标移进或者移出指定的文本类型时重画样式;
2、TRichView
TRichView组件主要用于显示文档内容的,包括图片,表格,文字,甚至可以显示其它组件。使用之前必须要关联TRVSTYLE(前面有介绍),不关联是不能显示的。TRichView有个重要的属性集SETTINGS,里面可以设置一些重要的参数。
TRichView属性,事件,方法;
.Style – 关联TRVSTYLE样式
.Options – 一些重要的操作(以后会讲到);
.ItemCount – 文档中元素数量.
.BackgroundBitmap- 文档背景图片
.BackgroundStyle - 文档背景图片显示样式
.Color.文档背景颜色
.FirstJumpNo 为第一个超文本增加ID号;
TRichView插入事件;
.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 and OnDrawCustomCaret 替换字符
常用方法
ApplyParaStyle, ApplyTextStyle 保存文本样式
ApplyStyleConversion 保存选中文本的样式
ApplyParaStyleConversion 保存选中段落样式
Change 文档内容改变事件
BeginUpdate, EndUpdate 重绘/刷新
SearchText, -A, -W 查找字符
常用插入方法
InsertText, -A, -W, InsertStringTag, InsertStringATag, InsertStringWTag 插入文本
InsertBreak 插入一条线
InsertBullet 插入项目符号
InsertControl 插入组件
InsertHotspot 插入热点
InsertPicture 插入图片
InsertHotPicture 插入超文本链接图片
InsertTab 插入制表键
InsertRVFFromFileEd, InsertRVFFromStreamEd 从文件或者流插入RVF格式的文件
InsertRTFFromFileEd, InsertRTFFromStreamEd 从文件或者流插入RTF格式的文件
InsertTextFromFile,InsertOEMTextFromFile从文件插入字符
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 删除当前检查点
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 and OnPagePostpaint 允许在页面个重绘
OnPrintComponent 打印组件
页边距
LeftMarginMM 左边距
RightMarginMM 右边距
TopMarginMM 上边距
BottomMarginMM 下边距
这里的边距和文档编辑时边距是不同的,一个针对页面,一个针对文档
TRVPrintPreview
预览文档,要先关联TRVPrint,并且打印设置已经准备完毕
TRVReportHelper
TRVReportHelper和TRVPrint相似,TRVPrint是把文档送入打印机,TRVReportHelper则是把文档送到任何canvas上显示如:屏幕,打印机,IMAGE等
TRVOfficeConverter
TRVOfficeConverter允许在RICHVIEW中使用Microsoft Office(32位板本的)文本格式
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
浏览文档
4、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/FindPriorCheckpoint查找检查点
FindNextItem/FindPriorItem 查找元素
FindNextHeading/FindPriorHeading查找标题
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事件
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 := <Paragraph Style Index>
richview.AddItem(<Table name>, table)
Paragraph Style Index 是这个表的索引值
Table name 表的名字,一个字符串,不是指这个对象名
这个方法不用在显示文档之前重新格式化。
richviewedit中增加表
richviewedit.InsertItem(<Table name>, 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 //开始遍历格子中的元素,和RICHEDIT一样
begin
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;
1.TSRVButton
继承自TSRVCustomControl类,其属性分别为:
Default:布尔类型,默认FALSE,当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的 OnClick事件。
FocusRectOffset:整型,默认3,控件边缘到聚焦虚线之间的距离。
Glyph:TPicture类型,默认空,指定一个显示的图像。
ModalResult:TModalResult类型,默认mrNone,模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭 对话框,返回mrOk值。
MouseBorderWidth:整型,默认2,边长。按下按钮时,指定图标和标题移动多远。
ShowFocusRect:布尔类型,默认TRUE,显示或隐藏聚焦时的虚线。
事件:
OnClick,单击触发。
2.TSRVCheckBox
继承自TSRVCustomControl类,其属性分别为:
AllowGrayed:布尔类型,默认FALSE,变灰状态。
Checked:布尔类型,默认FALSE,是否选中状态,使用前AllowGrayed必须设置为TRUE。
State:TSRVCheckBoxState类型以,默认cbUnchecked,表示复选框的当前状态.cbchecked 表示选中, cbunchecked表示未选中, cbgrayedb表示变灰状态。
3.TSRVComboBox
继承自TSRVCustomComboBox类,一个可以用于显示图像和提示信息的列表编辑框,所有属性和事件均继承TSRVCustomComboBox。
4.TSRVEdit
继承自TSRVEditControl类,文本输入框,带一个可选择弹出列表提示框。其属性分别为:
AutoSize:布尔类型,默认true,自动调整大小。
CharCase:TSRVEditCharCase类型,默认srvecNormal,大小字状态。
DropDownHints:整型,默认10,定义提示显示的条目数。
MaxLength:整型,默认0,指定可输入的最大字符长度,0为无限制。
PasswordChar:Char类型,默认#0,指定显示的字符,设置后无输字符将用设置的字符代替显示。
ReadOnly:布尔类型,默认FALSE,是否只读。
Modified:布尔类型,默认空,判断文本是否修改。
SelText:STRING类型,选择指定字符。
事件:
OnChange:文本改变时发生。
OnEditHints:列表提示框显示时发生。
OnCloseHints:列表提示框关闭时发生。
5.TSRVGroupBox
继承自TSRVCustomControl类,其属性分别为:
BorderColor:TColor类型,默认$00B8D8D7,边条线颜色。
BorderWidth:整型,默认1,边条线宽。
CaptionOffset:整型,默认10,边条线到标题的距离。
CornersOffset:整型,默认10,边圆角大小。
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,防止对像以默认方式绘图。
7.TSRVLabel
继承自TSRVGraphicControl,所有属性和事件均继承TSRVGraphicControl。
8.TSRVListBox
继承自TSRVCustomListBox,所有属性和事件均继承TSRVCustomListBox。
9.TSRVPaintBox
继承自TSRVCanvasControl,所有属性和事件均继承TSRVCanvasControl,用于提供一个画布供程序使用。
10.TSRVPanel
继承自TSRVCustomControl,一个泛型的面板控诉。其属性分别为:
BorderColor:边界线颜色。
BorderWidth:边界线长度。
CaptionOffset:边界到标题的距离。
CornersOffset:圆角大小。
11.TSRVRadioButton
继承自TSRVCustomControl,单选按扭。其属性分别为:
Checked:是否选定。
.SaveReg 保存 RVStyle 属性到注册文件;
.LoadReg 加载RVStyle 属性到注册文件.
.SaveCSS 保存.RVStyle样式到CSS文件
.SaveCSSToStream.保存.RVStyle样式为CSS文件,然后保存到流
RVSTYLE事件
.OnDrawCheckpoint 画检查点;
.OnDrawPageBreak – 画分隔线;
.OnDrawParaBack – 画段落背景;
.OnDrawTextBack – 画文本背景;
.OnApplyStyle – 保存文本类型到画布;
.OnApplyStyleColor – 保存文本颜色到画布;
.OnDrawStyleText – 指定的文本类型;
.OnStyleHoverSensitive –重画,当鼠标移进或者移出指定的文本类型时重画样式;
2.TRichView
TRichView组件主要用于显示文档内容的,包括图片,表格,文字,甚至可以显示其它组件。使用之前必须要关联TRVSTYLE(前面有介绍),不关联是不能显示的。TRichView有个重要的属性集SETTINGS,里面可以设置一些重要的参数。
TRichView属性,事件,方法;
.Style – 关联TRVSTYLE样式
.Options – 一些重要的操作(以后会讲到);
.ItemCount – 文档中元素数量.
.BackgroundBitmap- 文档背景图片
.BackgroundStyle - 文档背景图片显示样式
.Color.文档背景颜色
.FirstJumpNo 为第一个超文本增加ID号;
TRichView插入事件;
.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 返回是否是第一个元素;
TRichViewEdit
TRichViewEdit主要是用于编辑文本内容,如图片,文字,表格,控件,等等
如果没有关联RVSTYLE,TRichViewEdit是不能显示或者编辑任何内容的
属性,事件,方法列表(用法以后介绍)
属性
CurItemNo – 当前元素编号
CurItemStyle – 当前元素类型
CurParaStyleNo – 当前段落样式类型编号
CurTextStyleNo – 当前文本样式编号
EditorOptions – 设置一些编辑的选项
ReadOnly 内容是否可以编辑,或只读
Modified – 内容是否有修改
CustomCaretInterval – 自定义字符重绘时间间隔
事件
OnChange 文档内容改变时触发
OnCurParaStyleChanged 当前段落样式改变时触发
OnCurTextStyleChanged 当前文本样式改变时触发
OnPaste 允许粘贴
OnStyleConversion 改变选中文本样式
OnParaStyleConversion 改变段落样式
OnCaretGetOut 当字符超过边界时触发
OnCaretMove 当字符移动后触发
OnItemTextEdit 当一个文本类型元素的文本内容改变时
OnSmartPopupClick 弹出菜单
OnMeasureCustomCaret and OnDrawCustomCaret 替换字符
常用方法
ApplyParaStyle, ApplyTextStyle 保存文本样式
ApplyStyleConversion 保存选中文本的样式
ApplyParaStyleConversion 保存选中段落样式
Change 文档内容改变事件
BeginUpdate, EndUpdate 重绘/刷新
SearchText, -A, -W 查找字符
常用插入方法
InsertText, -A, -W, InsertStringTag, InsertStringATag, InsertStringWTag 插入文本
InsertBreak 插入一条线
InsertBullet 插入项目符号
InsertControl 插入组件
InsertHotspot 插入热点
InsertPicture 插入图片
InsertHotPicture 插入超文本链接图片
InsertTab 插入制表键
InsertRVFFromFileEd, InsertRVFFromStreamEd 从文件或者流插入RVF格式的文件
InsertRTFFromFileEd, InsertRTFFromStreamEd 从文件或者流插入RTF格式的文件
InsertTextFromFile,InsertOEMTextFromFile从文件插入字符
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 删除当前检查点
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 and OnPagePostpaint 允许在页面个重绘
OnPrintComponent 打印组件
页边距
LeftMarginMM 左边距
RightMarginMM 右边距
TopMarginMM 上边距
BottomMarginMM 下边距
这里的边距和文档编辑时边距是不同的,一个针对页面,一个针对文档
TRVPrintPreview
预览文档,要先关联TRVPrint,并且打印设置已经准备完毕
TRVReportHelper
TRVReportHelper和TRVPrint相似,TRVPrint是把文档送入打印机,TRVReportHelper则是把文档送到任何canvas上显示如:屏幕,打印机,IMAGE等
TRVOfficeConverter
TRVOfficeConverter允许在RICHVIEW中使用Microsoft Office(32位板本的)文本格式
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
浏览文档
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/FindPriorCheckpoint查找检查点
FindNextItem/FindPriorItem 查找元素
FindNextHeading/FindPriorHeading查找标题
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事件
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 := <Paragraph Style Index>
richview.AddItem(<Table name>, table)
Paragraph Style Index 是这个表的索引值
Table name 表的名字,一个字符串,不是指这个对象名
这个方法不用在显示文档之前重新格式化。
richviewedit中增加表
richviewedit.InsertItem(<Table name>, 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 //开始遍历格子中的元素,和RICHEDIT一样
begin
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;
1.TSRVButton
继承自TSRVCustomControl类,其属性分别为:
Default:布尔类型,默认FALSE,当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的 OnClick事件。
FocusRectOffset:整型,默认3,控件边缘到聚焦虚线之间的距离。
Glyph:TPicture类型,默认空,指定一个显示的图像。
ModalResult:TModalResult类型,默认mrNone,模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭 对话框,返回mrOk值。
MouseBorderWidth:整型,默认2,边长。按下按钮时,指定图标和标题移动多远。
ShowFocusRect:布尔类型,默认TRUE,显示或隐藏聚焦时的虚线。
事件:
OnClick,单击触发。
2.TSRVCheckBox
继承自TSRVCustomControl类,其属性分别为:
AllowGrayed:布尔类型,默认FALSE,变灰状态。
Checked:布尔类型,默认FALSE,是否选中状态,使用前AllowGrayed必须设置为TRUE。
State:TSRVCheckBoxState类型以,默认cbUnchecked,表示复选框的当前状态.cbchecked 表示选中, cbunchecked表示未选中, cbgrayedb表示变灰状态。
3.TSRVComboBox
继承自TSRVCustomComboBox类,一个可以用于显示图像和提示信息的列表编辑框,所有属性和事件均继承TSRVCustomComboBox。
4.TSRVEdit
继承自TSRVEditControl类,文本输入框,带一个可选择弹出列表提示框。其属性分别为:
AutoSize:布尔类型,默认true,自动调整大小。
CharCase:TSRVEditCharCase类型,默认srvecNormal,大小字状态。
DropDownHints:整型,默认10,定义提示显示的条目数。
MaxLength:整型,默认0,指定可输入的最大字符长度,0为无限制。
PasswordChar:Char类型,默认#0,指定显示的字符,设置后无输字符将用设置的字符代替显示。
ReadOnly:布尔类型,默认FALSE,是否只读。
Modified:布尔类型,默认空,判断文本是否修改。
SelText:STRING类型,选择指定字符。
事件:
OnChange:文本改变时发生。
OnEditHints:列表提示框显示时发生。
OnCloseHints:列表提示框关闭时发生。
5.TSRVGroupBox
继承自TSRVCustomControl类,其属性分别为:
BorderColor:TColor类型,默认$00B8D8D7,边条线颜色。
BorderWidth:整型,默认1,边条线宽。
CaptionOffset:整型,默认10,边条线到标题的距离。
CornersOffset:整型,默认10,边圆角大小。
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,防止对像以默认方式绘图。
7.TSRVLabel
继承自TSRVGraphicControl,所有属性和事件均继承TSRVGraphicControl。
8.TSRVListBox
继承自TSRVCustomListBox,所有属性和事件均继承TSRVCustomListBox。
9.TSRVPaintBox
继承自TSRVCanvasControl,所有属性和事件均继承TSRVCanvasControl,用于提供一个画布供程序使用。
10.TSRVPanel
继承自TSRVCustomControl,一个泛型的面板控诉。其属性分别为:
BorderColor:边界线颜色。
BorderWidth:边界线长度。
CaptionOffset:边界到标题的距离。
CornersOffset:圆角大小。
11.TSRVRadioButton
继承自TSRVCustomControl,单选按扭。其属性分别为:
Checked:是否选定。
环境:
Windwos7 旗舰版;
DelphiXE2 Update2;
RichView版本13.10.1
原理:
在最终发给打印画布之前,处理要打印的内容(画布上的图),即获取到要打印的起始行的位置,将此位置之前的所有内容都“涂“为白色;
实现步骤:
1.在TSRichViewEdit中增加两个变量
// 续打起始位置 ColorEgg 2012-7-6 23:20:48
UseSequelPrint: Boolean;//初始化为False
SequelPos: Integer;//初始化为0
在PaintPage中,处理续打的最后效果
具体伪代码如下,有ColorEgg的注释处为改动
procedure TSRichViewEdit.PaintPage(PageNo: Integer; Canvas: TCanvas;
ScaleX, ScaleY: Single; PageRect, PaintRect, RClient: TRect;
OffsetX, OffsetY: Integer; Printing: Boolean);
Var
…
begin
…
with OldRect do
hRegion := CreateRectRgn(Left, Top, Right, Bottom);
SelectClipRgn(Canvas.Handle, hRegion);
DeleteObject(hRegion);
end;
if not UseSequelPrint then //ColorEgg 正常打印
begin
// drawing Page Number
if (FPageProperty.FPageViewMode) and (not FPageProperty.ShowPageBreaks) and
FPageProperty.PageNoVisible and (PageNo >= FPageProperty.FPageNoFirst) and
(not Printing or IsInPrintingRange(PageEndItemNo[PageNo - 1])) then
begin
…
end;
{$IFNDEF RVDONOTUSESEQ}
If (PageStartDrawItemNo[PageNo - 1] <> -1) then
…
If not Printing or IsInPrintingRange(PageEndItemNo[PageNo - 1]) then
…
{$ENDIF}
If not Printing or IsInPrintingRange(PageStartItemNo[PageNo - 1]) then
begin
…
end;
if Assigned(FOnPaintPage) and
(not Printing or IsInPrintingRange(PageEndItemNo[PageNo - 1])) then
begin
…
end;
end
else // ColorEgg 处理续打
begin
tmp := PaintRect;
tmp.Bottom := SequelPos;
Canvas.FillRect(tmp);
end;
// SetWorldTransform(Canvas.Handle, OldXForm);
RestoreCanvasZoom(Canvas, OldInfo);
end;
上面的代码和原文有11行不一样,包括begin、else、end所占的行。
2.在按行续打按钮的事件中写
procedure TForm1.btnPrintCurLineClick(Sender: TObject);
var
vPt: TPoint;
vDocMs: TMemoryStream;
begin
try
vDocMs := TMemoryStream.Create;
srvEdoc.RichViewEdit.SaveRVFToStream(vDocMs, False);
vDocMs.Position := 0;
srvEdocPrint.LoadRVFFromStream(vDocMs);
srvEdocPrint.CurrentPage := srvEdoc.CurrentPage;
vPt := srvEdoc.CaretPos;
srvEdocPrint.UseSequelPrint := True;
srvEdocPrint.SequelPos := vPt.Y;
srvEdocPrint.PrintCurrent;
finally
FreeAndNil(vDocMs);
end;
end;
其中,srvEdoc为编辑所用的TSRichViewEdit,srvEdocPrint为处理打印用的TSRichViewEdit,本例中这样做的原因是:打印时要对页面做一些“硬”处理,如果和编辑用同一个的话,会影响到编辑的所见,这样通过增加不到20行代码,即可最简单的完成从指定行续打。
存在问题:
上面讲的只适合从指定的文本行开始打印当前页,如果从表格中指定行续打会发生偏移,需要用另外的方法处理,不在本例讨论范围之内。