• delphi RichView的使用介绍


    delphi RichView的使用介绍

    RichView 组件 由 个组件模块组成,分别是:

        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行代码,即可最简单的完成从指定行续打。

    存在问题:

    上面讲的只适合从指定的文本行开始打印当前页,如果从表格中指定行续打会发生偏移,需要用另外的方法处理,不在本例讨论范围之内。

  • 相关阅读:
    spring MVC框架(入门篇)-1
    spring的三种注入方式
    mybitis实现增,删,改,查,模糊查询的两种方式:(2)
    [JavaEE] 20141228_Java类文章搜集
    [JavaEE] Apache Maven 入门篇(下)
    [JavaEE] Apache Maven 入门篇(上)
    [ASP.Net] MVC2,3,4,5的不同
    [JavaEE] Mybatis与Ibatis比较
    [ASP.Net] 转 > ASP.NET MVC 大牛之路
    [ASP.Net] 转 > ASP.NET MVC 小牛之路
  • 原文地址:https://www.cnblogs.com/zhusd/p/16287277.html
Copyright © 2020-2023  润新知