delphi RichView的使用介绍
<h2> <span>delphi RichView的使用介绍 </span></h2><div id="cnblogs_post_body" class="blogpost-body blogpost-body-html">
<p><strong>RichView </strong>组件 由 <strong>9 </strong>个组件模块组成,分别是:</p>
<p> <strong>1、TRVStyle</strong>:主要是定义RICHVIEW样式,定义后,其它RIHCVIEW都可以引用此样式。</p>
<p> <strong> 2、TRichView</strong> :主要用于显示文本,图像,等等</p>
<p> <strong>3、TRichViewEdit</strong>: 主要用于编辑文本,图像,等等</p>
<p> <strong>4、TDBRichView</strong>: 和RICHVIEW一样,但主要用于数据感之</p>
<p> <strong>5、TDBRichViewEdit</strong> : 和RIHCVIEWEDIT一样,但主要用于数据感之</p>
<p> <strong>6、TRVPrint</strong> : 用于控件中文档的打印</p>
<p> <strong>7、TRVPrintPreview</strong> :用于打印预览</p>
<p> <strong>8、TRVReportHelper</strong> :用于在其它控件上显示文档</p>
<p> <strong>9、TRVOfficeConverter</strong> :用于操作WORD文档</p>
<p> </p>
<p><strong>9大类详细介绍:</strong></p>
<p> <strong>1、TRVStyle</strong> :这个组件在运行时是不可见的,TRVSTYLE是派生类,直接继承TCOMPONENT。如果你想显示RICHVIEW里面的文档,只用把要显示的RICHVIEW关联TRVSTYLE组件就行,(创建一个TRVSTYLE后把,RICHVEIW的STYLE属性关 联这个TRVSTLE)。同样 RichView, RichViewEdit, DBRichView, DBRichViewEdit 都可以关联这个TRVSTYLE,方法相同。如果一个TRVSTYLE关联多个组件后,当其中一个组件要删除这个TRVSTYLE后,其它的组件就不能继续使用这个TRVSTYLE,解决办法就是一个组件关联一个TRVSTYLE。</p>
<p> RVSTYLE有三个主属性:</p>
<p> (1)TEXTSTYLES– 主要是设置一些文本样式;</p>
<p> (2)PARASTYLES– 段落标题样式 </p>
<p> (3)LISTSTYLES–段落标题样式列表</p>
<p> RVSTYLE颜色属性:</p>
<p> .Color – 背景色;</p>
<p> .SelColor, InactiveSelColor – 选择文本的背景色;</p>
<p> .SelTextColor, InactiveSelTextColor – 选择文本的颜色;</p>
<p> .DisabledFontColor – 控件不可能时文本的颜色.</p>
<p> .HoverColor – 超文本的颜色;</p>
<p> .CheckpointColor –检查点虚线颜色;</p>
<p> .CheckpointEvColor – 检查点事件虚线颜色;</p>
<p> .PageBreakColor – 文档隔断颜色;</p>
<p> .FloatingLineColor – 左右占位符颜色</p>
<p> RVSTYLE:鼠标样式;</p>
<p> .JumpCursor – 超文本样式 </p>
<p> .LineSelectCursor – 左边栏样式.</p>
<p>LABEL元素相关属性</p>
<p> .FieldHighlightColor – 高亮显示颜色.</p>
<p> .FieldHighlightType –高亮显示模式(有三种).</p>
<p> .FootnoteNumbering – 一些页脚类型.</p>
<p> .FootnotePageReset – 页脚模式.</p>
<p> .EndnoteNumbering – 尾注类型.</p>
<p>RVSTYLE其它属性;</p>
<p> .SelectionStyle – 文档外观选择;</p>
<p> .SelectionMode – 选择模式;</p>
<p> .DefUnicodeStyle – 默认Unicode 文本样式;</p>
<p> .DefCodePage – ANSI <->Unicode 自动转换;</p>
<p> .LineWrapMode 文本框类型;</p>
<p> .UseSound. 声音开关</p>
<p>RVSTYLE方法;</p>
<p> .SaveINI 保存 RVStyle 属性到INI文件;</p>
<p> .LoadINI 加载 RVStyle属性从INI文件;</p>
<p> .SaveReg 保存 RVStyle 属性到注册文件;</p>
<p> .LoadReg 加载RVStyle 属性到注册文件.</p>
<p> .SaveCSS 保存.RVStyle样式到CSS文件</p>
<p> .SaveCSSToStream.保存.RVStyle样式为CSS文件,然后保存到流</p>
<p>RVSTYLE事件</p>
<p> .OnDrawCheckpoint 画检查点;</p>
<p> .OnDrawPageBreak – 画分隔线;</p>
<p> .OnDrawParaBack – 画段落背景;</p>
<p> .OnDrawTextBack – 画文本背景;</p>
<p> .OnApplyStyle – 保存文本类型到画布;</p>
<p> .OnApplyStyleColor – 保存文本颜色到画布;</p>
<p> .OnDrawStyleText – 指定的文本类型;</p>
<p> .OnStyleHoverSensitive –重画,当鼠标移进或者移出指定的文本类型时重画样式;</p>
<p><strong>2、TRichView</strong><br> TRichView组件主要用于显示文档内容的,包括图片,表格,文字,甚至可以显示其它组件。使用之前必须要关联TRVSTYLE(前面有介绍),不关联是不能显示的。TRichView有个重要的属性集SETTINGS,里面可以设置一些重要的参数。<br> TRichView属性,事件,方法;<br> .Style – 关联TRVSTYLE样式<br> .Options – 一些重要的操作(以后会讲到);<br> .ItemCount – 文档中元素数量.<br> .BackgroundBitmap- 文档背景图片<br> .BackgroundStyle - 文档背景图片显示样式<br> .Color.文档背景颜色<br> .FirstJumpNo 为第一个超文本增加ID号;<br> TRichView插入事件;<br> .AddNL 增加文本元素;<br> .AddBreakEx 增加分隔线;<br> .AddPictureEx 增加图片;<br> .AddHotPicture 增加热点图片;<br> .AddControlEx 增加组件;<br> .Add 在文本后面增加字符;<br> .AddFmt 增加特点格式字符集<br> .Clear 清除文档内容<br> .Format, FormatTail 格式化文档内容;<br> .Reformat 重新格式化文档;<br> .OnJump 当光标点击超链接时发生;<br> .OnRVMouseMove 当光标移动到超链接时发生;<br> .GetJumpPointItemNo 跳转到指定ID号的元素;<br> .LeftMargin, RightMargin, TopMargin, BottomMargin 左右上下边距;<br> .MaxTextWidth 最长行(字符数);<br> .MinTextWidth 最短行(字符数);<br> .DocumentHeight 文档高;<br> .VAlign 垂直效准线;<br> .VScrollVisible 垂直滑动条开关;<br> .HScrollVisible 平水滑动条开关;<br> .VSmallStep 垂直滑动条滑动幅度;<br> .OnVScrolled 垂直滑动条事件;<br> .OnHScrolled 水平滑动条事件;<br> .Copy 复制选择的内容到剪切板;<br> .CopyDef 选择方式复制选择的内容到剪切板;<br> .CopyImage 复制选择的图片到剪切板;<br> .CopyTextA 复制选择的内容,以文本形式到剪切板;<br> .CopyTextW 复制选择的内容,以Unicode格式到剪切板;<br> .CopyRVF 复制选择的内容,以RVF格式到剪切板;<br> .CopyRTF 复制选择的内容,以RTF格式到剪切板;<br> .GetSelectedImage 返回选择的图片;<br> .GetSelText 返回选择的文本;<br> .GetSelTextW 以Unicode字符形式返回选择的内容;<br> .SelectAll 全选;<br> .SetSelectionBounds 选择指定的元素;<br> .SelectWordAt 选择一个指定坐标上的字符;<br> .SelectControl 选择一个可视组件;<br> .Deselect 取消选择;<br> .RVFOptions 一些加载和保存RVF文体的操作;<br> .RVFWarnings 一些RVF文体阅读时的错误;<br> .SaveRVF 保存文档为RVF格式;<br> .SaveRVFToStream 保存文档为RVF格式,然后保存到流;<br> .LoadRVF 加载RVF文件;<br> .LoadRVFFromStream 从流加载RVF文件;<br> .CopyRVF 复制RVF文档到剪切板;<br> .InsertRVFFromStream 从流增加RVF文档;<br> .LoadFromStream 从流加载RVF, RTF或者文本格式的文件;<br> .LoadText 从文件中增加文本;<br> .LoadTextW 从Unicode encoding文件中增加文本;<br> .LoadRTF 加载RTF;<br> .SaveHTML 保存文档为HTML格式;<br> .SaveHTMLEx 保存文档为HTML格式。使用CSS样式;<br> .SaveHTMLToStream, SaveHTMLToStreamEx 方法同上,只不过保存到流,不是直接保存为文档;<br> .SaveText 保存为文本文件;<br> .SaveTextW 保存为Unicode文件;<br> .SaveTextToStream, SaveTextToStreamW – 可以选择性的保存到流;<br> .SaveRTF 可以选择性的保存为RTF格式;<br> .SaveRTFToStream 可以选择性的保存为RTF格式到流.<br> .GetItemStyle 返回一个元素的类型;<br> .GetTextInfo 返回文本元素的信息;<br> .GetBreakInfo 返回分隔线信息;<br> .GetBulletInfo 返回着重号信息;<br> .GetHotspotInfo 返回热点信息;<br> .GetPictureInfo 返回图片或者热点图片信息;<br> .GetControlInfo 返回组件信息;<br> .GetItemExtraIntProperty,GetItemExtraStrProperty 返回元素额外的属性值;<br> .GetItem 通用方法,主要用于表格;<br> .GetItemCheckpoint 返回元素的检查点;<br> .GetItemVAlign 返回元素位置;<br> .GetItemTag 返回元素的标签;<br> .GetItemText 返回元素内容;<br> .IsParaStart 返回是否是第一个元素;<br> .IsFromNewLine 返回是否是第一个元素;</p>
<p><br><strong>3、TRichViewEdit </strong><br>TRichViewEdit主要是用于编辑文本内容,如图片,文字,表格,控件,等等<br>如果没有关联RVSTYLE,TRichViewEdit是不能显示或者编辑任何内容的<br>属性,事件,方法列表(用法以后介绍)<br>属性<br>CurItemNo – 当前元素编号<br>CurItemStyle – 当前元素类型<br>CurParaStyleNo – 当前段落样式类型编号<br>CurTextStyleNo – 当前文本样式编号<br>EditorOptions – 设置一些编辑的选项<br>ReadOnly 内容是否可以编辑,或只读<br>Modified – 内容是否有修改<br>CustomCaretInterval – 自定义字符重绘时间间隔<br>事件<br>OnChange 文档内容改变时触发<br>OnCurParaStyleChanged 当前段落样式改变时触发<br>OnCurTextStyleChanged 当前文本样式改变时触发<br>OnPaste 允许粘贴<br>OnStyleConversion 改变选中文本样式<br>OnParaStyleConversion 改变段落样式<br>OnCaretGetOut 当字符超过边界时触发<br>OnCaretMove 当字符移动后触发<br>OnItemTextEdit 当一个文本类型元素的文本内容改变时<br>OnSmartPopupClick 弹出菜单<br>OnMeasureCustomCaret and OnDrawCustomCaret 替换字符<br>常用方法<br>ApplyParaStyle, ApplyTextStyle 保存文本样式<br>ApplyStyleConversion 保存选中文本的样式<br>ApplyParaStyleConversion 保存选中段落样式<br>Change 文档内容改变事件<br>BeginUpdate, EndUpdate 重绘/刷新<br>SearchText, -A, -W 查找字符<br>常用插入方法<br>InsertText, -A, -W, InsertStringTag, InsertStringATag, InsertStringWTag 插入文本<br>InsertBreak 插入一条线<br>InsertBullet 插入项目符号<br>InsertControl 插入组件<br>InsertHotspot 插入热点<br>InsertPicture 插入图片<br>InsertHotPicture 插入超文本链接图片<br>InsertTab 插入制表键<br>InsertRVFFromFileEd, InsertRVFFromStreamEd 从文件或者流插入RVF格式的文件<br>InsertRTFFromFileEd, InsertRTFFromStreamEd 从文件或者流插入RTF格式的文件<br>InsertTextFromFile,InsertOEMTextFromFile从文件插入字符<br>InsertItem 常用插入元素的方法<br>剪贴板操作(主要方法和事件)<br>CanPaste 是否允许从剪贴板粘贴<br>CanPasteRVF 是否允许从剪贴板粘贴RVF格式内容<br>CanPasteRTF 是否允许从剪贴板粘贴RTF格式内容<br>CutDef 剪切到道貌岸然板<br>Paste 粘贴<br>PasteBitmap 粘贴图片<br>PasteMetafile 粘贴图形元件<br>PasteGraphicFile 粘贴图形元件<br>PasteRVF 从剪贴板粘贴RVF格式内容<br>PasteRTF 从剪贴板粘贴RTF格式内容<br>PasteTextA 从剪贴板粘贴ANSI格式内容<br>PasteTextW 从剪贴板粘贴UNICODE格式内容<br>DeleteSelection 删除选中的内容<br>SelectCurrentWord 选中当前内容<br>SelectCurrentLine 选中当前行<br>常用编辑元素方法<br>SetBreakInfoEd 改变横线<br>SetBulletInfoEd 改变项目符号<br>SetControlInfoEd 改变组件<br>SetHotspotInfoEd 改变热点<br>SetPictureInfoEd 改变图片<br>SetItemExtraIntPropertyEd,SetItemExtraStrPropertyEd 编辑元素属性<br>SetItemTagEd 编辑元素标签<br>SetItemVAlignEd 调整元素相对位置<br>SetItemTextEd 改变元素名<br>SetCheckpointInfoEd 编辑检查点<br>RemoveCheckpointEd 删除检查点<br>ResizeControl 调整组件<br>AdjustControlPlacement ,AdjustControlPlacement2 自动调整组件位置<br>获取元素信息方法<br>GetCurrentTextInfo 获取文本信息<br>GetCurrentBreakInfo 获取线条元素信息<br>GetCurrentBulletInfo 获取项目符号信息<br>GetCurrentControlInfo 组件信息<br>GetCurrentHotspotInfo 热点信息<br>GetCurrentPictureInfo 图片信息<br>GetCurrentItem,GetCurrentItemEx. 未知类型元素信息<br>GetCurrentItemExtraIntProperty,GetCurrentItemExtraStrProperty 返回指定元素属性值<br>GetCurrentTag 返回元素标签<br>GetCurrentItemVAlign 返回元素水平位置<br>GetCurrentCheckpoint 返回元素检查点<br>GetCurrentItemText 返回元素名<br>GetCurrentLineCol 返回当前位置的行和列<br>撤销和恢复<br>UndoLimit 设置撤销缓冲区<br>UndoAction 返回撤销操作<br>Undo 撤销最后操作<br>UndoName 返回撤销操作名<br>RedoAction 返回恢复操作<br>Redo redoes 恢复最后一次撤销操作<br>RedoName 返回恢复操作名<br>ClearUndo 清除撤销和恢复缓冲区<br>Unicode操作<br>PasteTextW 从剪贴板复制UNICODE文本<br>InsertTextW 插入UNICODE文本<br>InsertTextFromFileW 从文件插入UNICODE文本<br>拼写检查<br>GetCurrentMisspelling 返回当前位置有错语的词<br>LiveSpellingMode 拼写检查开关<br>检查点<br>SetCheckpointInfoEd 给特殊的元素增加检查点<br>RemoveCheckpointEd 删除特殊元素的检查点<br>GetCurrentCheckpoint 返回当前元素的检查点<br>SetCurrentCheckpointInfo 增加或者编辑当前元素的检查点<br>RemoveCurrentCheckpoint 删除当前元素的检查点<br>InsertCheckpoint 当前位置增加检查点<br>GetCheckpointAtCaret 返回当前位置的检查点<br>RemoveCheckpointAtCaret 删除当前检查点</p>
<p>TDBRichView TDBRichViewEdit TRVPrint TRVPrintPreview,TRVReportHelper<br>TDBRichView,TDBRichViewEdit主要用于显示,编辑数据感之内容<br>和RichView一样,DBRichView,DBRichViewEdit如果不关联RVStyle也是不能显示任何内容的。<br>TDBRichView,DBRichViewEdit支持如下类型<br>RVF RichView文件类型<br>RTF RichView文本类型<br>text 文本<br>others 其它<br>TRVPrint<br>TRVPrint主要用于打印RICHVIEW文档,运行时不可见<br>使用方法<br>1 先指定要打印的内容<br>2 指定页眉或页脚<br>3 格式化内容<br>4 打印或者预览<br>5 释放内存<br>事件方法<br>OnFormatting 当页码发生改变时触发<br>OnSendingToPrinter 打印时触发<br>OnPagePrepaint and OnPagePostpaint 允许在页面个重绘<br>OnPrintComponent 打印组件<br>页边距<br>LeftMarginMM 左边距<br>RightMarginMM 右边距<br>TopMarginMM 上边距<br>BottomMarginMM 下边距<br>这里的边距和文档编辑时边距是不同的,一个针对页面,一个针对文档<br>TRVPrintPreview<br>预览文档,要先关联TRVPrint,并且打印设置已经准备完毕<br>TRVReportHelper<br>TRVReportHelper和TRVPrint相似,TRVPrint是把文档送入打印机,TRVReportHelper则是把文档送到任何canvas上显示如:屏幕,打印机,IMAGE等<br>TRVOfficeConverter<br>TRVOfficeConverter允许在RICHVIEW中使用Microsoft Office(32位板本的)文本格式</p>
<p>ScaleRichView<br>ScaleRichView是一个TRichView的插件,用TRichView引擎来呈现文档,ScaleRichView上的文档其实就是一个隐藏的RICHVIEWEDIT<br>,所以你可以像使用RIHCVIEW一样使用ScaleRichView,安装ScaleRichView之前一定要先安装TRIHCVIEW,通常在开发过程中用捆绑方式(RichView+ScaleRichView)进行开发<br>ScaleRichView 主要功能介绍<br>1 支持所有RICHVIEW功能<br>2 所见即所得模式<br>3 快速编码<br>4 支持差不多120多种文档格式<br>5 支持打印不同文档样式,如文档编辑时为A4样式,打印时可以选择A5样式<br>6 页面定位<br>7 支持多种部署模式<br>8 滚动显示<br>ScaleRichView组件介绍(后面发布将对下面类一个一个的详细介绍)<br>1 TSRichViewEdit<br> 可以以所见即所得模式编辑文档,支持多种页面浏览模式,包括页面视图模式<br>2 TDBSRichViewEdit<br> 和TSRichViewEdit 一样,只不过用于数据感之,也是所见即所得<br>3 TSclRVRuler<br> TSRichViewEdit的标尺,水平和垂直,继承TRVRuler<br>4 TSRVToolBar<br> 工具栏<br>5 TSRVToolWindow<br> 弹出式窗口,可以把放工具栏<br>6 TSRVPageScroll<br> 显示文档缩略图<br>7 TSRVPrint<br> 打印文档<br>8 TSRVPreview<br> 浏览文档<br> <br><strong>4、TSRichViewEdit</strong><br>TSRichViewEdit主要是用来处理文本内容,下面是一些常用属性和方法,事件<br>属性:<br>RichViewEdit:返回一个TRichViewEdit组件,然后通过TRichViewEdit一个属性方法来操作文档,默认情况下,TSRichViewEdit<br>使用了一个内部的TRichViewEdit,如果你想使用自定义的TRichViewEdit,只要关联TSRichViewEdit的ExternalRV属性,如果想<br>使用自定义的TRVStyle,则只要关联其ExternalRVSYTLE就行<br>RVHeader 页眉编辑器<br>RVFooter 页脚编辑器<br>RVNote 脚注和尾注编辑器<br>PageProperty 相关页的属性<br>ViewProperty 查看模式<br>BackgroundProperty 背景属性<br>下面的一些属性提供了访问RichViewEdit的属性,用法和RichViewEdit一样,前面有讲过,这里就不讲了,属性名相同,这个属性也可适用于其它编辑器<br> .AnimationMode<br> .BiDiMode<br> .CPEventKind<br> .ReadOnly<br> .RTFOptions<br> .RTFReadProperties<br> .RVBackgroundBitmap<br> .RVBackgroundStyle<br> .RVColor<br> .RVEditorOptions<br> .RVFOptions<br> .RVFParaStylesReadMode<br> .RVFTextStylesReadMode<br> .RVOptions<br> .SmartPopupProperties, SmartPopupVisible<br> .TabNavigation<br>下面一些属性是允许在编辑时改变属性值的<br>HScrollPos 设置或者得到滚动的位置<br>HScrollBar 和 VScrollBar 显示或者隐藏滚动条<br>OnHScrolled 和 OnVScrolled 滚动事件<br>ScrolledPage 返回第一页码<br>MenuHButtons 和 MenuHorizontal 水平菜单设置<br>MenuVButtons 和 MenuVertical 垂直菜单设置<br>方法<br>ConvertRVToSRV 和 ConvertSRVToRV 允许TSRichViewEdit和RichViewEdit之间位置转换<br>GetPageClientRect 返回页的位置<br>GetItemBounds 返回页面元素位置<br>GetCaretPosInUnits 返回当前位置<br>GetPageAt 返回指定位置的页面<br>GetItemAt 返回指定位置的元素<br>UnitsPerInchH UnitsPerInchV 允许单元之间的坐标转换<br>FindNextHyperlink/FindPriorHyperlink 查找超链接<br>FindNextCheckpoint/FindPriorCheckpoint查找检查点<br>FindNextItem/FindPriorItem 查找元素<br>FindNextHeading/FindPriorHeading查找标题<br>NextCurHyperlink/PriorCurHyperlink选择超链接<br>NextCurCheckpoint/PriorCurCheckpoint选择检查点<br>NextCurItem/PriorCurItem选择元素<br>NextCurHeading/PriorCurHeading 移动到当前的标题<br>RangeSearch指定范围查找<br>FirstCurPage光标移动第一页<br>PriorCurPage光标移动前一页<br>NextCurPage光标移动下一页<br>LastCurPage光标移动最后一页<br>PrintAll打印整个文档<br>PrintCurrent打印当前页面<br>PrintRange打印指定范围内容<br>MinPrintedItemNo 和 MaxPrintedItemNo 允许从指定元素之间打印<br>DrawPage和DrawMetafile允许把文档显示到其它画布或者图元上<br>事件<br>OnPageFormatChanged 当 PageProperty和PageFormat属性改变发生<br>OnChangeViewModeAfter 当ViewProperty属性改变时发生<br>OnChangeViewModeBefore 当ViewMode属性改变时发生<br>OnZoomChanged 当ViewProperty.ZoomPercent或.ZoomMode属性改变时发生<br>OnHScrolled, OnVScrolled, OnPageScrolled滚动时发生<br>OnCurrentPageChange 移动到其它页面时发生<br>OnPageCountChanged 文档页数发生变化时发生<br>OnClickPage 单击页面后发生<br>OnPaintPage 画自定义页面,如果默认方法不能完全显示时,可用此方法<br>OnPaintComponent 显示控件<br>OnPaint 显示其它<br>OnCheckControl 枚举所以加入的控件<br>OnMessageControl 允许加入的控件响应消息<br>OnGetPagePos 允许自定义页的位置和顺序<br>表格图标<br>先设置ViewProperty的UseTableIcons属性为TRUE,当用户把光标移动到表格上时,表格左上方会显示一个小图标,当光标移走时,图标消失,同时触发OnTableIconClick事件</p>
<p>Table(表格)<br>table是RICHVIEW里面一个比较特殊的元素,也是RICHVIEW众元素中最复杂的一种,TABLE由单元格组成,在RICHVIEW里,每个单元格相当于一个RICHVIEW文档,单元格里面可以表格等各种元素,理论上表格是可以无限嵌套,这样的结构就导致了其复杂性。<br>Table属性<br>BorderWidth 表的边框长度<br>BorderStyle 边框样式<br>BorderColor 边框颜色<br>BorderLightColor 3D外观边框颜色<br>VisibleBorders 边框的显示和隐藏<br>CellBorderWidth 单元格边框长度<br>CellBorderStyle 单元格边框样式<br>CellBorderColor 单元格边框颜色<br>CellBorderLightColor 3D外观单元格边框颜色<br>CellHSpacing 单元格之间的水平距离<br>CellVSpacing 单元格之间的垂直距离<br>BorderHSpacing 表边框与表最外层单元格之间的水平距离<br>BorderVSpacing表边框与表最外层单元格之间的垂直距离<br>Color 表的背景色<br>BackgroundImage 背景图<br>BackgroundStyle 背景样式<br>BackgroundImageFileName 在HTML中保存背景图名<br>Table方法<br>InsertColsLeft 当前单元格左边增加列<br>InsertColsRight 当前单元格右边增加列<br>InsertRowsAbove当前单元格上面增加行<br>InsertRowsBelow 当前单元格下面增加行<br>DeleteSelectedCols删除选中列<br>DeleteSelectedRows删除选中行<br>MergeSelectedCells 合并单元格<br>UnmergeSelectedCells拆分单元格<br>SplitSelectedCellsHorizontally 将选中的单元格拆分成几行<br>SplitSelectedCellsVertically 将选中的单元格拆分成几列<br>InsertCols 指定位置增加列<br>InsertRows 指定位置增加行<br>DeleteCols 删除指定列<br>DeleteRows 删除指定行<br>MergeCells 合并指定范围内的单元格<br>UnmergeCells 拆分指定范围内的单元格<br>DeleteEmptyRows 删除所有带有空单元各的行<br>DeleteEmptyCols 删除所有带有空单元各的列<br>TABLE用法<br>创建<br>...<br>var table:TRVTableItemInfo;<br>...<br>table := TRVTableItemInfo.CreateEx(RowCount,ColumnCount,RVData);<br>RVData是你要创建表的文档,一般是指richview.RVData或richviewedit.RVData</p>
<p>RICHVIEW中增加表<br>table.ParaNo := <Paragraph Style Index><br>richview.AddItem(<Table name>, table)<br>Paragraph Style Index 是这个表的索引值<br>Table name 表的名字,一个字符串,不是指这个对象名<br>这个方法不用在显示文档之前重新格式化。</p>
<p>richviewedit中增加表<br>richviewedit.InsertItem(<Table name>, table)<br>这个方法是在当前位置加入表,不管光标在文档中,还是在表格或者单元格中(光标在哪就加到哪),如果文档是只读或者处于保护状态,用这个方法后,会返回一个FALSE,如果光标在表格中,这个方法将自动释放表格<br>cell用法<br>cell(单元格)是表格的主属性,因为每个CELL相当于一个RICHEDIT,所以用法和RICHEDIT差不多,但要注意的事,这些用法一般只是相对于光标当前所以的位置,也就是说,如果光标在表格里,同样的方法就是对表格的作用,如果在表格外,就是对外面的RICHEDIT的作用,如果一个文档里面同时有多个表格的时候,光标在任意地方,你想往某个表格中的某个单元格输入内容时,这时就要自己判断地方了。这是因为,当光标点某个地方时,RICHEDIT实际上已经帮你判断好了位置。<br>那么,如何在一个文档的表格里面的指定的一个单元格里面,输入自己的内容呢?<br>假设现在有一个文档,里面有一个表格(多个表格大家自己去想,方法一样)<br>,这个表格里面有二个单元格,我现在想在第二个单元格中输入‘我爱你’三个字,并且此时光标在任意地方,下面是最简单实现方法<br>for i:= 0 to itemcount -1 do<br> begin<br> if getitem(i) is TRVTableItemInfo then<br> begin<br> RVData:=TRVTableItemInfo(item).cells.AddNLATag('我爱你', 0, 0, '');<br> break;<br> end;<br> end;<br>如果此时的单元格你不知道多少个,可以用遍历表格单元格方法,如下,我要得到表格中,每个单元格的中的文字<br>for row := 0 to TRVTableItemInfo(item).RowCount-1 do<br> begin<br> for col := 0 to table.ColCount-1 do<br> if table.Cells<>nil then<br> begin<br> RVData := table.Cells.GetRVData;//得到第一个单元格内容<br> for i := 0 to RVData.ItemCount-1 do //开始遍历格子中的元素,和RICHEDIT一样<br> begin<br> if (i>0) and RVData.IsFromNewLine(i) then<br> Result := Result + #13#10;<br> if RVData.GetItemStyle(i)=rvsTab then<br> Result := Result + #9<br> else if RVData.GetItemStyle(i)>=0 then<br> Result := Result + RVData.GetItemText(i);//得到第一个单元格的文字<br> end;<br> Result := Result + table.TextColSeparator;//遍历第一行的所有格子,值相加<br> end;<br> Result := Result + table.TextRowSeparator;//遍历所有行的格子,值相加,最终得到每个格子的值<br> end;</p>
<p>1.TSRVButton<br> 继承自TSRVCustomControl类,其属性分别为:<br> Default:布尔类型,默认FALSE,当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的 OnClick事件。<br> FocusRectOffset:整型,默认3,控件边缘到聚焦虚线之间的距离。<br> Glyph:TPicture类型,默认空,指定一个显示的图像。<br> ModalResult:TModalResult类型,默认mrNone,模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭 对话框,返回mrOk值。<br> MouseBorderWidth:整型,默认2,边长。按下按钮时,指定图标和标题移动多远。<br> ShowFocusRect:布尔类型,默认TRUE,显示或隐藏聚焦时的虚线。<br> 事件:<br> OnClick,单击触发。<br>2.TSRVCheckBox<br> 继承自TSRVCustomControl类,其属性分别为:<br> AllowGrayed:布尔类型,默认FALSE,变灰状态。<br> Checked:布尔类型,默认FALSE,是否选中状态,使用前AllowGrayed必须设置为TRUE。<br> State:TSRVCheckBoxState类型以,默认cbUnchecked,表示复选框的当前状态.cbchecked 表示选中, cbunchecked表示未选中, cbgrayedb表示变灰状态。<br>3.TSRVComboBox<br> 继承自TSRVCustomComboBox类,一个可以用于显示图像和提示信息的列表编辑框,所有属性和事件均继承TSRVCustomComboBox。 <br>4.TSRVEdit<br> 继承自TSRVEditControl类,文本输入框,带一个可选择弹出列表提示框。其属性分别为:<br> AutoSize:布尔类型,默认true,自动调整大小。<br> CharCase:TSRVEditCharCase类型,默认srvecNormal,大小字状态。<br> DropDownHints:整型,默认10,定义提示显示的条目数。<br> MaxLength:整型,默认0,指定可输入的最大字符长度,0为无限制。<br> PasswordChar:Char类型,默认#0,指定显示的字符,设置后无输字符将用设置的字符代替显示。<br> ReadOnly:布尔类型,默认FALSE,是否只读。<br> Modified:布尔类型,默认空,判断文本是否修改。<br> SelText:STRING类型,选择指定字符。<br> 事件:<br> OnChange:文本改变时发生。<br> OnEditHints:列表提示框显示时发生。<br> OnCloseHints:列表提示框关闭时发生。<br>5.TSRVGroupBox<br> 继承自TSRVCustomControl类,其属性分别为:<br> BorderColor:TColor类型,默认$00B8D8D7,边条线颜色。<br> BorderWidth:整型,默认1,边条线宽。<br> CaptionOffset:整型,默认10,边条线到标题的距离。<br> CornersOffset:整型,默认10,边圆角大小。<br>6.TSRVImagesScroll<br> 继承自TSRVCustomControl类,用于显示图像列表,其属性分别为:<br> CanMoveImages:布尔类型,默认TRUE,是否可用鼠标移动图像。<br> CloseButton:定义每张图像的关闭按扭。<br> DoubleBuffered:打开双缓冲。<br> ImageList:连接一个用于显示的图像表。<br> Indent:缩进距离。<br> ItemHeight:图像高,<br> ItemIndex:选中图像的索引。<br> Items:图像对象。<br> ItemWidth:图像长。<br> Kind:图像放置方式。<br> RestrictMove:是否可以移动图像到控件外面,使用前选设置CanMoveImages为TRUE。<br> Spacings:每张图像之间距离。<br> ItemBorderStyle:图像边框样式。<br> ItemBorderColor:图像边框颜色。<br> ItemColor:图像颜色。<br> ItemDownColor:按下后的颜色。<br> ItemHotColor: 移动到图像上的颜色。<br> ItemSelectedColor:选择择后的颜色。<br> DecButtonWidth:按扭外观样式。<br> LargeChange:单击滚动条后移动的距离。<br> ScrollBarHeight:滚动条高度。<br> ScrollerPosition:滚动条位置。<br> ScrollingDelay:滚动条速度。<br> SmallChange:单击滚动条上的箭头按扭后移动的距离。<br> 事件:<br> OnChange:图像选择时发生。<br> OnItemMove:二个图像位置发生变化时发生。<br> OnCloseItem:关闭图像时发生。<br> OnDrawBorder,
OnDrawBackground, OnDrawItem,
OnDrawCloseButton:自绘图像,CANVAS为画布,ARect指定图像位置,APaintRect重新绘图的位置,可以使用这个属性优化绘图方法。 state对像状态,设置DoDefault,防止对像以默认方式绘图。<br>7.TSRVLabel<br> 继承自TSRVGraphicControl,所有属性和事件均继承TSRVGraphicControl。<br>8.TSRVListBox<br> 继承自TSRVCustomListBox,所有属性和事件均继承TSRVCustomListBox。<br>9.TSRVPaintBox<br> 继承自TSRVCanvasControl,所有属性和事件均继承TSRVCanvasControl,用于提供一个画布供程序使用。<br>10.TSRVPanel<br> 继承自TSRVCustomControl,一个泛型的面板控诉。其属性分别为:<br> BorderColor:边界线颜色。<br> BorderWidth:边界线长度。<br> CaptionOffset:边界到标题的距离。<br> CornersOffset:圆角大小。<br>11.TSRVRadioButton<br> 继承自TSRVCustomControl,单选按扭。其属性分别为:<br> Checked:是否选定。</p>
<p><br> .SaveReg 保存 RVStyle 属性到注册文件;</p>
<p> .LoadReg 加载RVStyle 属性到注册文件.</p>
<p> .SaveCSS 保存.RVStyle样式到CSS文件</p>
<p> .SaveCSSToStream.保存.RVStyle样式为CSS文件,然后保存到流</p>
<p>RVSTYLE事件</p>
<p> .OnDrawCheckpoint 画检查点;</p>
<p> .OnDrawPageBreak – 画分隔线;</p>
<p> .OnDrawParaBack – 画段落背景;</p>
<p> .OnDrawTextBack – 画文本背景;</p>
<p> .OnApplyStyle – 保存文本类型到画布;</p>
<p> .OnApplyStyleColor – 保存文本颜色到画布;</p>
<p> .OnDrawStyleText – 指定的文本类型;</p>
<p> .OnStyleHoverSensitive –重画,当鼠标移进或者移出指定的文本类型时重画样式;</p>
<p>2.TRichView<br> TRichView组件主要用于显示文档内容的,包括图片,表格,文字,甚至可以显示其它组件。使用之前必须要关联TRVSTYLE(前面有介绍),不关联是不能显示的。TRichView有个重要的属性集SETTINGS,里面可以设置一些重要的参数。<br> TRichView属性,事件,方法;<br> .Style – 关联TRVSTYLE样式<br> .Options – 一些重要的操作(以后会讲到);<br> .ItemCount – 文档中元素数量.<br> .BackgroundBitmap- 文档背景图片<br> .BackgroundStyle - 文档背景图片显示样式<br> .Color.文档背景颜色<br> .FirstJumpNo 为第一个超文本增加ID号;<br> TRichView插入事件;<br> .AddNL 增加文本元素;<br> .AddBreakEx 增加分隔线;<br> .AddPictureEx 增加图片;<br> .AddHotPicture 增加热点图片;<br> .AddControlEx 增加组件;<br> .Add 在文本后面增加字符;<br> .AddFmt 增加特点格式字符集<br> .Clear 清除文档内容<br> .Format, FormatTail 格式化文档内容;<br> .Reformat 重新格式化文档;<br> .OnJump 当光标点击超链接时发生;<br> .OnRVMouseMove 当光标移动到超链接时发生;<br> .GetJumpPointItemNo 跳转到指定ID号的元素;<br> .LeftMargin, RightMargin, TopMargin, BottomMargin 左右上下边距;<br> .MaxTextWidth 最长行(字符数);<br> .MinTextWidth 最短行(字符数);<br> .DocumentHeight 文档高;<br> .VAlign 垂直效准线;<br> .VScrollVisible 垂直滑动条开关;<br> .HScrollVisible 平水滑动条开关;<br> .VSmallStep 垂直滑动条滑动幅度;<br> .OnVScrolled 垂直滑动条事件;<br> .OnHScrolled 水平滑动条事件;<br> .Copy 复制选择的内容到剪切板;<br> .CopyDef 选择方式复制选择的内容到剪切板;<br> .CopyImage 复制选择的图片到剪切板;<br> .CopyTextA 复制选择的内容,以文本形式到剪切板;<br> .CopyTextW 复制选择的内容,以Unicode格式到剪切板;<br> .CopyRVF 复制选择的内容,以RVF格式到剪切板;<br> .CopyRTF 复制选择的内容,以RTF格式到剪切板;<br> .GetSelectedImage 返回选择的图片;<br> .GetSelText 返回选择的文本;<br> .GetSelTextW 以Unicode字符形式返回选择的内容;<br> .SelectAll 全选;<br> .SetSelectionBounds 选择指定的元素;<br> .SelectWordAt 选择一个指定坐标上的字符;<br> .SelectControl 选择一个可视组件;<br> .Deselect 取消选择;<br> .RVFOptions 一些加载和保存RVF文体的操作;<br> .RVFWarnings 一些RVF文体阅读时的错误;<br> .SaveRVF 保存文档为RVF格式;<br> .SaveRVFToStream 保存文档为RVF格式,然后保存到流;<br> .LoadRVF 加载RVF文件;<br> .LoadRVFFromStream 从流加载RVF文件;<br> .CopyRVF 复制RVF文档到剪切板;<br> .InsertRVFFromStream 从流增加RVF文档;<br> .LoadFromStream 从流加载RVF, RTF或者文本格式的文件;<br> .LoadText 从文件中增加文本;<br> .LoadTextW 从Unicode encoding文件中增加文本;<br> .LoadRTF 加载RTF;<br> .SaveHTML 保存文档为HTML格式;<br> .SaveHTMLEx 保存文档为HTML格式。使用CSS样式;<br> .SaveHTMLToStream, SaveHTMLToStreamEx 方法同上,只不过保存到流,不是直接保存为文档;<br> .SaveText 保存为文本文件;<br> .SaveTextW 保存为Unicode文件;<br> .SaveTextToStream, SaveTextToStreamW – 可以选择性的保存到流;<br> .SaveRTF 可以选择性的保存为RTF格式;<br> .SaveRTFToStream 可以选择性的保存为RTF格式到流.<br> .GetItemStyle 返回一个元素的类型;<br> .GetTextInfo 返回文本元素的信息;<br> .GetBreakInfo 返回分隔线信息;<br> .GetBulletInfo 返回着重号信息;<br> .GetHotspotInfo 返回热点信息;<br> .GetPictureInfo 返回图片或者热点图片信息;<br> .GetControlInfo 返回组件信息;<br> .GetItemExtraIntProperty,GetItemExtraStrProperty 返回元素额外的属性值;<br> .GetItem 通用方法,主要用于表格;<br> .GetItemCheckpoint 返回元素的检查点;<br> .GetItemVAlign 返回元素位置;<br> .GetItemTag 返回元素的标签;<br> .GetItemText 返回元素内容;<br> .IsParaStart 返回是否是第一个元素;<br> .IsFromNewLine 返回是否是第一个元素;</p>
<p><br>TRichViewEdit <br>TRichViewEdit主要是用于编辑文本内容,如图片,文字,表格,控件,等等<br>如果没有关联RVSTYLE,TRichViewEdit是不能显示或者编辑任何内容的<br>属性,事件,方法列表(用法以后介绍)<br>属性<br>CurItemNo – 当前元素编号<br>CurItemStyle – 当前元素类型<br>CurParaStyleNo – 当前段落样式类型编号<br>CurTextStyleNo – 当前文本样式编号<br>EditorOptions – 设置一些编辑的选项<br>ReadOnly 内容是否可以编辑,或只读<br>Modified – 内容是否有修改<br>CustomCaretInterval – 自定义字符重绘时间间隔<br>事件<br>OnChange 文档内容改变时触发<br>OnCurParaStyleChanged 当前段落样式改变时触发<br>OnCurTextStyleChanged 当前文本样式改变时触发<br>OnPaste 允许粘贴<br>OnStyleConversion 改变选中文本样式<br>OnParaStyleConversion 改变段落样式<br>OnCaretGetOut 当字符超过边界时触发<br>OnCaretMove 当字符移动后触发<br>OnItemTextEdit 当一个文本类型元素的文本内容改变时<br>OnSmartPopupClick 弹出菜单<br>OnMeasureCustomCaret and OnDrawCustomCaret 替换字符<br>常用方法<br>ApplyParaStyle, ApplyTextStyle 保存文本样式<br>ApplyStyleConversion 保存选中文本的样式<br>ApplyParaStyleConversion 保存选中段落样式<br>Change 文档内容改变事件<br>BeginUpdate, EndUpdate 重绘/刷新<br>SearchText, -A, -W 查找字符<br>常用插入方法<br>InsertText, -A, -W, InsertStringTag, InsertStringATag, InsertStringWTag 插入文本<br>InsertBreak 插入一条线<br>InsertBullet 插入项目符号<br>InsertControl 插入组件<br>InsertHotspot 插入热点<br>InsertPicture 插入图片<br>InsertHotPicture 插入超文本链接图片<br>InsertTab 插入制表键<br>InsertRVFFromFileEd, InsertRVFFromStreamEd 从文件或者流插入RVF格式的文件<br>InsertRTFFromFileEd, InsertRTFFromStreamEd 从文件或者流插入RTF格式的文件<br>InsertTextFromFile,InsertOEMTextFromFile从文件插入字符<br>InsertItem 常用插入元素的方法<br>剪贴板操作(主要方法和事件)<br>CanPaste 是否允许从剪贴板粘贴<br>CanPasteRVF 是否允许从剪贴板粘贴RVF格式内容<br>CanPasteRTF 是否允许从剪贴板粘贴RTF格式内容<br>CutDef 剪切到道貌岸然板<br>Paste 粘贴<br>PasteBitmap 粘贴图片<br>PasteMetafile 粘贴图形元件<br>PasteGraphicFile 粘贴图形元件<br>PasteRVF 从剪贴板粘贴RVF格式内容<br>PasteRTF 从剪贴板粘贴RTF格式内容<br>PasteTextA 从剪贴板粘贴ANSI格式内容<br>PasteTextW 从剪贴板粘贴UNICODE格式内容<br>DeleteSelection 删除选中的内容<br>SelectCurrentWord 选中当前内容<br>SelectCurrentLine 选中当前行<br>常用编辑元素方法<br>SetBreakInfoEd 改变横线<br>SetBulletInfoEd 改变项目符号<br>SetControlInfoEd 改变组件<br>SetHotspotInfoEd 改变热点<br>SetPictureInfoEd 改变图片<br>SetItemExtraIntPropertyEd,SetItemExtraStrPropertyEd 编辑元素属性<br>SetItemTagEd 编辑元素标签<br>SetItemVAlignEd 调整元素相对位置<br>SetItemTextEd 改变元素名<br>SetCheckpointInfoEd 编辑检查点<br>RemoveCheckpointEd 删除检查点<br>ResizeControl 调整组件<br>AdjustControlPlacement ,AdjustControlPlacement2 自动调整组件位置<br>获取元素信息方法<br>GetCurrentTextInfo 获取文本信息<br>GetCurrentBreakInfo 获取线条元素信息<br>GetCurrentBulletInfo 获取项目符号信息<br>GetCurrentControlInfo 组件信息<br>GetCurrentHotspotInfo 热点信息<br>GetCurrentPictureInfo 图片信息<br>GetCurrentItem,GetCurrentItemEx. 未知类型元素信息<br>GetCurrentItemExtraIntProperty,GetCurrentItemExtraStrProperty 返回指定元素属性值<br>GetCurrentTag 返回元素标签<br>GetCurrentItemVAlign 返回元素水平位置<br>GetCurrentCheckpoint 返回元素检查点<br>GetCurrentItemText 返回元素名<br>GetCurrentLineCol 返回当前位置的行和列<br>撤销和恢复<br>UndoLimit 设置撤销缓冲区<br>UndoAction 返回撤销操作<br>Undo 撤销最后操作<br>UndoName 返回撤销操作名<br>RedoAction 返回恢复操作<br>Redo redoes 恢复最后一次撤销操作<br>RedoName 返回恢复操作名<br>ClearUndo 清除撤销和恢复缓冲区<br>Unicode操作<br>PasteTextW 从剪贴板复制UNICODE文本<br>InsertTextW 插入UNICODE文本<br>InsertTextFromFileW 从文件插入UNICODE文本<br>拼写检查<br>GetCurrentMisspelling 返回当前位置有错语的词<br>LiveSpellingMode 拼写检查开关<br>检查点<br>SetCheckpointInfoEd 给特殊的元素增加检查点<br>RemoveCheckpointEd 删除特殊元素的检查点<br>GetCurrentCheckpoint 返回当前元素的检查点<br>SetCurrentCheckpointInfo 增加或者编辑当前元素的检查点<br>RemoveCurrentCheckpoint 删除当前元素的检查点<br>InsertCheckpoint 当前位置增加检查点<br>GetCheckpointAtCaret 返回当前位置的检查点<br>RemoveCheckpointAtCaret 删除当前检查点</p>
<p>TDBRichView TDBRichViewEdit TRVPrint TRVPrintPreview,TRVReportHelper<br>TDBRichView,TDBRichViewEdit主要用于显示,编辑数据感之内容<br>和RichView一样,DBRichView,DBRichViewEdit如果不关联RVStyle也是不能显示任何内容的。<br>TDBRichView,DBRichViewEdit支持如下类型<br>RVF RichView文件类型<br>RTF RichView文本类型<br>text 文本<br>others 其它<br>TRVPrint<br>TRVPrint主要用于打印RICHVIEW文档,运行时不可见<br>使用方法<br>1 先指定要打印的内容<br>2 指定页眉或页脚<br>3 格式化内容<br>4 打印或者预览<br>5 释放内存<br>事件方法<br>OnFormatting 当页码发生改变时触发<br>OnSendingToPrinter 打印时触发<br>OnPagePrepaint and OnPagePostpaint 允许在页面个重绘<br>OnPrintComponent 打印组件<br>页边距<br>LeftMarginMM 左边距<br>RightMarginMM 右边距<br>TopMarginMM 上边距<br>BottomMarginMM 下边距<br>这里的边距和文档编辑时边距是不同的,一个针对页面,一个针对文档<br>TRVPrintPreview<br>预览文档,要先关联TRVPrint,并且打印设置已经准备完毕<br>TRVReportHelper<br>TRVReportHelper和TRVPrint相似,TRVPrint是把文档送入打印机,TRVReportHelper则是把文档送到任何canvas上显示如:屏幕,打印机,IMAGE等<br>TRVOfficeConverter<br>TRVOfficeConverter允许在RICHVIEW中使用Microsoft Office(32位板本的)文本格式</p>
<p>ScaleRichView<br>ScaleRichView是一个TRichView的插件,用TRichView引擎来呈现文档,ScaleRichView上的文档其实就是一个隐藏的RICHVIEWEDIT<br>,所以你可以像使用RIHCVIEW一样使用ScaleRichView,安装ScaleRichView之前一定要先安装TRIHCVIEW,通常在开发过程中用捆绑方式(RichView+ScaleRichView)进行开发<br>ScaleRichView 主要功能介绍<br>1 支持所有RICHVIEW功能<br>2 所见即所得模式<br>3 快速编码<br>4 支持差不多120多种文档格式<br>5 支持打印不同文档样式,如文档编辑时为A4样式,打印时可以选择A5样式<br>6 页面定位<br>7 支持多种部署模式<br>8 滚动显示<br>ScaleRichView组件介绍(后面发布将对下面类一个一个的详细介绍)<br>1 TSRichViewEdit<br> 可以以所见即所得模式编辑文档,支持多种页面浏览模式,包括页面视图模式<br>2 TDBSRichViewEdit<br> 和TSRichViewEdit 一样,只不过用于数据感之,也是所见即所得<br>3 TSclRVRuler<br> TSRichViewEdit的标尺,水平和垂直,继承TRVRuler<br>4 TSRVToolBar<br> 工具栏<br>5 TSRVToolWindow<br> 弹出式窗口,可以把放工具栏<br>6 TSRVPageScroll<br> 显示文档缩略图<br>7 TSRVPrint<br> 打印文档<br>8 TSRVPreview<br> 浏览文档<br> <br>TSRichViewEdit<br>TSRichViewEdit主要是用来处理文本内容,下面是一些常用属性和方法,事件<br>属性:<br>RichViewEdit:返回一个TRichViewEdit组件,然后通过TRichViewEdit一个属性方法来操作文档,默认情况下,TSRichViewEdit<br>使用了一个内部的TRichViewEdit,如果你想使用自定义的TRichViewEdit,只要关联TSRichViewEdit的ExternalRV属性,如果想<br>使用自定义的TRVStyle,则只要关联其ExternalRVSYTLE就行<br>RVHeader 页眉编辑器<br>RVFooter 页脚编辑器<br>RVNote 脚注和尾注编辑器<br>PageProperty 相关页的属性<br>ViewProperty 查看模式<br>BackgroundProperty 背景属性<br>下面的一些属性提供了访问RichViewEdit的属性,用法和RichViewEdit一样,前面有讲过,这里就不讲了,属性名相同,这个属性也可适用于其它编辑器<br> .AnimationMode<br> .BiDiMode<br> .CPEventKind<br> .ReadOnly<br> .RTFOptions<br> .RTFReadProperties<br> .RVBackgroundBitmap<br> .RVBackgroundStyle<br> .RVColor<br> .RVEditorOptions<br> .RVFOptions<br> .RVFParaStylesReadMode<br> .RVFTextStylesReadMode<br> .RVOptions<br> .SmartPopupProperties, SmartPopupVisible<br> .TabNavigation<br>下面一些属性是允许在编辑时改变属性值的<br>HScrollPos 设置或者得到滚动的位置<br>HScrollBar 和 VScrollBar 显示或者隐藏滚动条<br>OnHScrolled 和 OnVScrolled 滚动事件<br>ScrolledPage 返回第一页码<br>MenuHButtons 和 MenuHorizontal 水平菜单设置<br>MenuVButtons 和 MenuVertical 垂直菜单设置<br>方法<br>ConvertRVToSRV 和 ConvertSRVToRV 允许TSRichViewEdit和RichViewEdit之间位置转换<br>GetPageClientRect 返回页的位置<br>GetItemBounds 返回页面元素位置<br>GetCaretPosInUnits 返回当前位置<br>GetPageAt 返回指定位置的页面<br>GetItemAt 返回指定位置的元素<br>UnitsPerInchH UnitsPerInchV 允许单元之间的坐标转换<br>FindNextHyperlink/FindPriorHyperlink 查找超链接<br>FindNextCheckpoint/FindPriorCheckpoint查找检查点<br>FindNextItem/FindPriorItem 查找元素<br>FindNextHeading/FindPriorHeading查找标题<br>NextCurHyperlink/PriorCurHyperlink选择超链接<br>NextCurCheckpoint/PriorCurCheckpoint选择检查点<br>NextCurItem/PriorCurItem选择元素<br>NextCurHeading/PriorCurHeading 移动到当前的标题<br>RangeSearch指定范围查找<br>FirstCurPage光标移动第一页<br>PriorCurPage光标移动前一页<br>NextCurPage光标移动下一页<br>LastCurPage光标移动最后一页<br>PrintAll打印整个文档<br>PrintCurrent打印当前页面<br>PrintRange打印指定范围内容<br>MinPrintedItemNo 和 MaxPrintedItemNo 允许从指定元素之间打印<br>DrawPage和DrawMetafile允许把文档显示到其它画布或者图元上<br>事件<br>OnPageFormatChanged 当 PageProperty和PageFormat属性改变发生<br>OnChangeViewModeAfter 当ViewProperty属性改变时发生<br>OnChangeViewModeBefore 当ViewMode属性改变时发生<br>OnZoomChanged 当ViewProperty.ZoomPercent或.ZoomMode属性改变时发生<br>OnHScrolled, OnVScrolled, OnPageScrolled滚动时发生<br>OnCurrentPageChange 移动到其它页面时发生<br>OnPageCountChanged 文档页数发生变化时发生<br>OnClickPage 单击页面后发生<br>OnPaintPage 画自定义页面,如果默认方法不能完全显示时,可用此方法<br>OnPaintComponent 显示控件<br>OnPaint 显示其它<br>OnCheckControl 枚举所以加入的控件<br>OnMessageControl 允许加入的控件响应消息<br>OnGetPagePos 允许自定义页的位置和顺序<br>表格图标<br>先设置ViewProperty的UseTableIcons属性为TRUE,当用户把光标移动到表格上时,表格左上方会显示一个小图标,当光标移走时,图标消失,同时触发OnTableIconClick事件</p>
<p>Table(表格)<br>table是RICHVIEW里面一个比较特殊的元素,也是RICHVIEW众元素中最复杂的一种,TABLE由单元格组成,在RICHVIEW里,每个单元格相当于一个RICHVIEW文档,单元格里面可以表格等各种元素,理论上表格是可以无限嵌套,这样的结构就导致了其复杂性。<br>Table属性<br>BorderWidth 表的边框长度<br>BorderStyle 边框样式<br>BorderColor 边框颜色<br>BorderLightColor 3D外观边框颜色<br>VisibleBorders 边框的显示和隐藏<br>CellBorderWidth 单元格边框长度<br>CellBorderStyle 单元格边框样式<br>CellBorderColor 单元格边框颜色<br>CellBorderLightColor 3D外观单元格边框颜色<br>CellHSpacing 单元格之间的水平距离<br>CellVSpacing 单元格之间的垂直距离<br>BorderHSpacing 表边框与表最外层单元格之间的水平距离<br>BorderVSpacing表边框与表最外层单元格之间的垂直距离<br>Color 表的背景色<br>BackgroundImage 背景图<br>BackgroundStyle 背景样式<br>BackgroundImageFileName 在HTML中保存背景图名<br>Table方法<br>InsertColsLeft 当前单元格左边增加列<br>InsertColsRight 当前单元格右边增加列<br>InsertRowsAbove当前单元格上面增加行<br>InsertRowsBelow 当前单元格下面增加行<br>DeleteSelectedCols删除选中列<br>DeleteSelectedRows删除选中行<br>MergeSelectedCells 合并单元格<br>UnmergeSelectedCells拆分单元格<br>SplitSelectedCellsHorizontally 将选中的单元格拆分成几行<br>SplitSelectedCellsVertically 将选中的单元格拆分成几列<br>InsertCols 指定位置增加列<br>InsertRows 指定位置增加行<br>DeleteCols 删除指定列<br>DeleteRows 删除指定行<br>MergeCells 合并指定范围内的单元格<br>UnmergeCells 拆分指定范围内的单元格<br>DeleteEmptyRows 删除所有带有空单元各的行<br>DeleteEmptyCols 删除所有带有空单元各的列<br>TABLE用法<br>创建<br>...<br>var table:TRVTableItemInfo;<br>...<br>table := TRVTableItemInfo.CreateEx(RowCount,ColumnCount,RVData);<br>RVData是你要创建表的文档,一般是指richview.RVData或richviewedit.RVData</p>
<p>RICHVIEW中增加表<br>table.ParaNo := <Paragraph Style Index><br>richview.AddItem(<Table name>, table)<br>Paragraph Style Index 是这个表的索引值<br>Table name 表的名字,一个字符串,不是指这个对象名<br>这个方法不用在显示文档之前重新格式化。</p>
<p>richviewedit中增加表<br>richviewedit.InsertItem(<Table name>, table)<br>这个方法是在当前位置加入表,不管光标在文档中,还是在表格或者单元格中(光标在哪就加到哪),如果文档是只读或者处于保护状态,用这个方法后,会返回一个FALSE,如果光标在表格中,这个方法将自动释放表格<br>cell用法<br>cell(单元格)是表格的主属性,因为每个CELL相当于一个RICHEDIT,所以用法和RICHEDIT差不多,但要注意的事,这些用法一般只是相对于光标当前所以的位置,也就是说,如果光标在表格里,同样的方法就是对表格的作用,如果在表格外,就是对外面的RICHEDIT的作用,如果一个文档里面同时有多个表格的时候,光标在任意地方,你想往某个表格中的某个单元格输入内容时,这时就要自己判断地方了。这是因为,当光标点某个地方时,RICHEDIT实际上已经帮你判断好了位置。<br>那么,如何在一个文档的表格里面的指定的一个单元格里面,输入自己的内容呢?<br>假设现在有一个文档,里面有一个表格(多个表格大家自己去想,方法一样)<br>,这个表格里面有二个单元格,我现在想在第二个单元格中输入‘我爱你’三个字,并且此时光标在任意地方,下面是最简单实现方法<br>for i:= 0 to itemcount -1 do<br> begin<br> if getitem(i) is TRVTableItemInfo then<br> begin<br> RVData:=TRVTableItemInfo(item).cells.AddNLATag('我爱你', 0, 0, '');<br> break;<br> end;<br> end;<br>如果此时的单元格你不知道多少个,可以用遍历表格单元格方法,如下,我要得到表格中,每个单元格的中的文字<br>for row := 0 to TRVTableItemInfo(item).RowCount-1 do<br> begin<br> for col := 0 to table.ColCount-1 do<br> if table.Cells<>nil then<br> begin<br> RVData := table.Cells.GetRVData;//得到第一个单元格内容<br> for i := 0 to RVData.ItemCount-1 do //开始遍历格子中的元素,和RICHEDIT一样<br> begin<br> if (i>0) and RVData.IsFromNewLine(i) then<br> Result := Result + #13#10;<br> if RVData.GetItemStyle(i)=rvsTab then<br> Result := Result + #9<br> else if RVData.GetItemStyle(i)>=0 then<br> Result := Result + RVData.GetItemText(i);//得到第一个单元格的文字<br> end;<br> Result := Result + table.TextColSeparator;//遍历第一行的所有格子,值相加<br> end;<br> Result := Result + table.TextRowSeparator;//遍历所有行的格子,值相加,最终得到每个格子的值<br> end;</p>
<p>1.TSRVButton<br> 继承自TSRVCustomControl类,其属性分别为:<br> Default:布尔类型,默认FALSE,当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的 OnClick事件。<br> FocusRectOffset:整型,默认3,控件边缘到聚焦虚线之间的距离。<br> Glyph:TPicture类型,默认空,指定一个显示的图像。<br> ModalResult:TModalResult类型,默认mrNone,模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭 对话框,返回mrOk值。<br> MouseBorderWidth:整型,默认2,边长。按下按钮时,指定图标和标题移动多远。<br> ShowFocusRect:布尔类型,默认TRUE,显示或隐藏聚焦时的虚线。<br> 事件:<br> OnClick,单击触发。<br>2.TSRVCheckBox<br> 继承自TSRVCustomControl类,其属性分别为:<br> AllowGrayed:布尔类型,默认FALSE,变灰状态。<br> Checked:布尔类型,默认FALSE,是否选中状态,使用前AllowGrayed必须设置为TRUE。<br> State:TSRVCheckBoxState类型以,默认cbUnchecked,表示复选框的当前状态.cbchecked 表示选中, cbunchecked表示未选中, cbgrayedb表示变灰状态。<br>3.TSRVComboBox<br> 继承自TSRVCustomComboBox类,一个可以用于显示图像和提示信息的列表编辑框,所有属性和事件均继承TSRVCustomComboBox。 <br>4.TSRVEdit<br> 继承自TSRVEditControl类,文本输入框,带一个可选择弹出列表提示框。其属性分别为:<br> AutoSize:布尔类型,默认true,自动调整大小。<br> CharCase:TSRVEditCharCase类型,默认srvecNormal,大小字状态。<br> DropDownHints:整型,默认10,定义提示显示的条目数。<br> MaxLength:整型,默认0,指定可输入的最大字符长度,0为无限制。<br> PasswordChar:Char类型,默认#0,指定显示的字符,设置后无输字符将用设置的字符代替显示。<br> ReadOnly:布尔类型,默认FALSE,是否只读。<br> Modified:布尔类型,默认空,判断文本是否修改。<br> SelText:STRING类型,选择指定字符。<br> 事件:<br> OnChange:文本改变时发生。<br> OnEditHints:列表提示框显示时发生。<br> OnCloseHints:列表提示框关闭时发生。<br>5.TSRVGroupBox<br> 继承自TSRVCustomControl类,其属性分别为:<br> BorderColor:TColor类型,默认$00B8D8D7,边条线颜色。<br> BorderWidth:整型,默认1,边条线宽。<br> CaptionOffset:整型,默认10,边条线到标题的距离。<br> CornersOffset:整型,默认10,边圆角大小。<br>6.TSRVImagesScroll<br> 继承自TSRVCustomControl类,用于显示图像列表,其属性分别为:<br> CanMoveImages:布尔类型,默认TRUE,是否可用鼠标移动图像。<br> CloseButton:定义每张图像的关闭按扭。<br> DoubleBuffered:打开双缓冲。<br> ImageList:连接一个用于显示的图像表。<br> Indent:缩进距离。<br> ItemHeight:图像高,<br> ItemIndex:选中图像的索引。<br> Items:图像对象。<br> ItemWidth:图像长。<br> Kind:图像放置方式。<br> RestrictMove:是否可以移动图像到控件外面,使用前选设置CanMoveImages为TRUE。<br> Spacings:每张图像之间距离。<br> ItemBorderStyle:图像边框样式。<br> ItemBorderColor:图像边框颜色。<br> ItemColor:图像颜色。<br> ItemDownColor:按下后的颜色。<br> ItemHotColor: 移动到图像上的颜色。<br> ItemSelectedColor:选择择后的颜色。<br> DecButtonWidth:按扭外观样式。<br> LargeChange:单击滚动条后移动的距离。<br> ScrollBarHeight:滚动条高度。<br> ScrollerPosition:滚动条位置。<br> ScrollingDelay:滚动条速度。<br> SmallChange:单击滚动条上的箭头按扭后移动的距离。<br> 事件:<br> OnChange:图像选择时发生。<br> OnItemMove:二个图像位置发生变化时发生。<br> OnCloseItem:关闭图像时发生。<br> OnDrawBorder,
OnDrawBackground, OnDrawItem,
OnDrawCloseButton:自绘图像,CANVAS为画布,ARect指定图像位置,APaintRect重新绘图的位置,可以使用这个属性优化绘图方法。 state对像状态,设置DoDefault,防止对像以默认方式绘图。<br>7.TSRVLabel<br> 继承自TSRVGraphicControl,所有属性和事件均继承TSRVGraphicControl。<br>8.TSRVListBox<br> 继承自TSRVCustomListBox,所有属性和事件均继承TSRVCustomListBox。<br>9.TSRVPaintBox<br> 继承自TSRVCanvasControl,所有属性和事件均继承TSRVCanvasControl,用于提供一个画布供程序使用。<br>10.TSRVPanel<br> 继承自TSRVCustomControl,一个泛型的面板控诉。其属性分别为:<br> BorderColor:边界线颜色。<br> BorderWidth:边界线长度。<br> CaptionOffset:边界到标题的距离。<br> CornersOffset:圆角大小。<br>11.TSRVRadioButton<br> 继承自TSRVCustomControl,单选按扭。其属性分别为:<br> Checked:是否选定。</p>
<p> </p>
<div> 从某行开始续打当前页</div>
<div>
<p>环境:</p>
<p>Windwos7 旗舰版;</p>
<p>DelphiXE2 Update2;</p>
<p>RichView版本13.10.1</p>
<p>原理:</p>
<p>在最终发给打印画布之前,处理要打印的内容(画布上的图),即获取到要打印的起始行的位置,将此位置之前的所有内容都“涂“为白色;</p>
<p>实现步骤:</p>
<p>1.在TSRichViewEdit中增加两个变量</p>
<p> // 续打起始位置 ColorEgg 2012-7-6 23:20:48</p>
<p> UseSequelPrint: Boolean;//初始化为False</p>
<p> SequelPos: Integer;//初始化为0</p>
<p>在PaintPage中,处理续打的最后效果</p>
<p>具体伪代码如下,有ColorEgg的注释处为改动</p>
<p>procedure TSRichViewEdit.PaintPage(PageNo: Integer; Canvas: TCanvas;</p>
<p> ScaleX, ScaleY: Single; PageRect, PaintRect, RClient: TRect;</p>
<p> OffsetX, OffsetY: Integer; Printing: Boolean);</p>
<p>Var</p>
<p>…</p>
<p>begin</p>
<p>…</p>
<p> with OldRect do</p>
<p> hRegion := CreateRectRgn(Left, Top, Right, Bottom);</p>
<p> SelectClipRgn(Canvas.Handle, hRegion);</p>
<p> DeleteObject(hRegion);</p>
<p> end;</p>
<p> if not UseSequelPrint then //ColorEgg 正常打印</p>
<p> begin</p>
<p> // drawing Page Number</p>
<p> if (FPageProperty.FPageViewMode) and (not FPageProperty.ShowPageBreaks) and</p>
<p> FPageProperty.PageNoVisible and (PageNo >= FPageProperty.FPageNoFirst) and</p>
<p> (not Printing or IsInPrintingRange(PageEndItemNo)) then</p>
<p> begin</p>
<p> …</p>
<p> end;</p>
<p> </p>
<p> {$IFNDEF RVDONOTUSESEQ}</p>
<p> If (PageStartDrawItemNo <> -1) then</p>
<p> …</p>
<p> If not Printing or IsInPrintingRange(PageEndItemNo) then</p>
<p> …</p>
<p> {$ENDIF}</p>
<p> If not Printing or IsInPrintingRange(PageStartItemNo) then</p>
<p> begin</p>
<p> …</p>
<p> end;</p>
<p> </p>
<p> if Assigned(FOnPaintPage) and</p>
<p> (not Printing or IsInPrintingRange(PageEndItemNo)) then</p>
<p> begin</p>
<p> …</p>
<p> end;</p>
<p> end</p>
<p> else // ColorEgg 处理续打</p>
<p> begin</p>
<p> tmp := PaintRect;</p>
<p> tmp.Bottom := SequelPos;</p>
<p> Canvas.FillRect(tmp);</p>
<p> end;</p>
<p> // SetWorldTransform(Canvas.Handle, OldXForm);</p>
<p> RestoreCanvasZoom(Canvas, OldInfo);</p>
<p>end;</p>
<p>上面的代码和原文有11行不一样,包括begin、else、end所占的行。</p>
<p>2.在按行续打按钮的事件中写</p>
<p>procedure TForm1.btnPrintCurLineClick(Sender: TObject);</p>
<p>var</p>
<p> vPt: TPoint;</p>
<p> vDocMs: TMemoryStream;</p>
<p>begin</p>
<p> try</p>
<p> vDocMs := TMemoryStream.Create;</p>
<p> srvEdoc.RichViewEdit.SaveRVFToStream(vDocMs, False);</p>
<p> vDocMs.Position := 0;</p>
<p> srvEdocPrint.LoadRVFFromStream(vDocMs);</p>
<p> srvEdocPrint.CurrentPage := srvEdoc.CurrentPage;</p>
<p> vPt := srvEdoc.CaretPos;</p>
<p> srvEdocPrint.UseSequelPrint := True;</p>
<p> srvEdocPrint.SequelPos := vPt.Y;</p>
<p> srvEdocPrint.PrintCurrent;</p>
<p> finally</p>
<p> FreeAndNil(vDocMs);</p>
<p> end;</p>
<p>end;</p>
<p>其中,srvEdoc为编辑所用的TSRichViewEdit,srvEdocPrint为处理打印用的TSRichViewEdit,本例中这样做的原因是:打印时要对页面做一些“硬”处理,如果和编辑用同一个的话,会影响到编辑的所见,这样通过增加不到20行代码,即可最简单的完成从指定行续打。</p>
<p>存在问题:</p>
<p>上面讲的只适合从指定的文本行开始打印当前页,如果从表格中指定行续打会发生偏移,需要用另外的方法处理,不在本例讨论范围之内。</p>
</div>
</div><br><br>
来源:https://www.cnblogs.com/zhusd/p/16287277.html
頁:
[1]