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行代码,即可最简单的完成从指定行续打。
存在问题:
上面讲的只适合从指定的文本行开始打印当前页,如果从表格中指定行续打会发生偏移,需要用另外的方法处理,不在本例讨论范围之内。
|
请发表评论