忙 日语:DELPHI 7.0 RaveReport报表

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 15:27:29
总是有人问:)
Rave   Reports概述

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

      Rave   Reports是一个基于组件的可视化报表设计工具,它简化了在应用程序加入报表的步骤.你可以是用Rave   Reports
去创建各种报表,从简单的条状报表到高度自定义的报表.报表功能包括:
      翻转文字注释
      全图示显示
      版面调整
      页面精确定位
      打印配置
      字体控制
      打印预览
      可重利用的报表内容
      对PDF,HTML,RTF,和text报表的显示支持

Rave   Reports初步入门

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

      你可以在VCL或CLX应用程序中使用Rave   Reports去实现来自数据库或非数据库数据的报表.下面的过程说明
怎样增加一个简单的报表到已存在的数据库应用程序中.

      1.在Delphi中打开一个数据库应用程序.
      2.从组件面板的Rave页,假如TRvDataSetConnection组件到应用程序的表单.
      3.在Object   Inspector中,设置DataSet的属性为一个已在你的应用程序中定义的dataset组件.使用Rave   Visual   Designer
      4.去设计你的报表然后并创建一个report   project文件(.rav   file).  
            选择Tools|Rave   Designer运行Rave   Visual   Designer.
            选择File|New   Data   Object显示Data   Connections对话框.                  
            在Data   Object   Type列表,选择Direct   Data   View然后单击Next.
            在Active   Data   Connections列表,选择RVDataSetConnection1然后单击Finish.
            在Rave   Visual   Designer窗口左边的Project   Tree中,展开Data   View   Dictionary结点,燃后展开刚创建的DataView1结点.
            你要使用的数据字段显示在DataView1结点下.  
            选择Tools|Report   Wizards|Simple   Table显示Simple   Table   wizard.
            选择DataView1然后单击Next.  
            选择你想要在这个报表中显示的两个或三个字段然后单击Next.
            按照随后的向导页提示区设置要在这个报表中使用的字段的排序,   页边距,首部文本,以及字体.  
            在最后向导页上,单击Generate完成这个向导然后在页面设计器中显示报表.
            选择File|Save   as显示Save   As对话框.   把Rave   project存到你的Delphi应用程序的目录下并命名为MyRave.rav.  
            最小化Rave   Visual   Designer窗口返回Delphi.

      5.从组件面板的Rave页,添加一个项目组件TRvProject到表单.  
      6.在Object   Inspector,设置ProjectFile属性为刚才创建的report   project文件(MyRave.rav).  
      7.从组件面板的Standard页,添加TButton到表单.
      8.在Object   Inspector,单击Events标签然后双击OnClick事件.
      9.在事件处理程序中使用ExecuteReport方法去执行Rave   project组件.  
      10.按F9运行应用程序.
      11.单击在第七步添加的按钮.
      12.Output   Options对话框被显示出来,单击OK显示报表.
Rave结构

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

1.Data   connection   组件:
     
      Rave数据来源于你的应用程序。这些标准数据连接组件,TRvCustomConnection,TrvDataSetConnection和TRvTableConnection
在Rave可视组件和你的应用程序之间作为数据连接桥。TRvCustomConnection组件可以用来访问象内存数组和二进制记录文件这样的非数据库数据。TRvDataSetConnection
可用来提供访问TDataSet派生的组件包括第三方数据组件。TRvTableConnection常用于特定的TTable组件或他们的各个派生组件。

2.TRvProject   组件
     
      这个组件提供报表和它们所拥有的组件的访问。TRvProject组件包含许多属性和方法允许你创建、修改、打印和设计你的报表项目。在每个应用程序中,你只需
要一个TRvProject,但是对于多个使用则不作限制。

3.Report   project   file   (.RAV   file)
     
      报表项目文件用来储存Rave   visual   designer中的报表定义。它是二进制文件,类似于Delphi的.DFM文件。所有的报表,报表项目的global   pages和data   views
被储存到这单个文件中。你可以导出或导入项目。使用TRvProject组件的方法,你也可以储存报表项目文件到数据库的blob字段或其他地方。

4.Reports

      Reports储存在报表项目的报表库中。一个Rave报表由报表页面和储存在这些页面的可视报表组件组成。你可以随意创建许多页面定义,然后在各种方法中
组合它们。
     
5.Global   Pages

      Global   Pages储存在报表项目的Global   Pages分类中,组件包含在Global   Pages上,不象其他那些报表页面里面的组件,它们对于所有报表都是可见的。Global   Pages
对于储存模板用于其他报表页面非常有用。

6.Data   Views
     
      Data   Views储存在报表项目的Data   Views   Dictionary中。Data   Views给提供数据连接组件提供一个接口。当创建新的Data   Views时,你必须有活动的数据
连接组件在正在运行的应用程序中或者在一个已加载的Delphi或C++   Builder表单上。Data   Views然后将让数据连接组件去检索元数据(meta-data)信息比如字段名,
数据类型,等等。字段组件包含在每个Data   Views中,可用来设置每个数据列的属性。


TRvSystem组件介绍

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

TRvSystem组件

描述:

      TRvSystem是一个非常强大的组件,它集成了TRvRenderPreview,   TRvRenderPrinter和TRvNDRWriter三个组件以简化系统的使用。TRvSystem
可以发送报表到打印机或预览屏幕并同时显示它们的设置及状态屏幕。

属性:

      DefaultDest:确定缺省的报表目的地被显示在设置对话框中,如果设置对话框不可用,那么DefaultDest将确定报表被送往哪里,
有效值是rdFile,   rdPreview   和   rdPrinter.
     
      SystemFiler:SystemFiler所有选项的运行方式和其他组件一样。除smMemory的流模式外,因为它不需要一个文件名且使用
TMemoryStream包含报表。
     
      SystemOptions:它控制TRvSystem组件的配置。soUseFiler表示总是发送报表到文件。对于宏方法已经在报表中使用的情况很有用。
soWaitForOK确定输出的报表已生成时用户是否已按下OK按钮。soShowStatus确定无论报表是被生成或打印都将显示状态屏幕。soAllowPrintFromPreview
用来确定是否用户可以从预览屏幕打印。soPreviewModal确定窗口是否是模式方式。soNoGenerate将略过报表生成阶段直接到达屏幕或打印机。这个选项应
当仅用在StreamMode为smFile的时候,因为在这时候,报表文件已经被提前生成且仅需要被观看或打印
     
      SystemPreview:显示TRvRenderPreview中所有的preview类型选项
     
      SystemPrinter:显示TRvNDRWriter中所有printer类型选项
     
      SystemSetups:为TRvSystem控制标准设置屏幕的配置。ssAllowSetup确定不管怎样设置屏幕都会显示。ssAllowCopies,ssAllowCollate和ssAllowDuplex
将使设置屏幕的这些选项处于打开状态。ssAllowDestPreview,   ssAllowDestPrinter   和   ssAllowDestFile确定哪个目标选项用户可访问。ssAllowPrinterSetup
将确定用户是否可以选择使用打印对话框来选择其他的打印机或设置其他打印选项。ssAllowPreviewSetup确定是否用户被允许在预览后选择使用打印设置对话框。

事件:

      TRvSystem中所有的OnXxxx事件运转完全和TRvNDRWriter中的一样。OverridePreview,   OverrideSetup   和   OverrideStatus允许程序员替换Rave提供
的缺省的屏幕。参考OverridePreviewProc,   OverrideStatusProc   和   OverrideSetupProc可以获得怎样创建覆盖事件的方法。RpFormPreview,   RpFormStatus
和RpFormSetup单元放在\RAVE5\SOURCE中也有说明怎样和TRvSystem进行交互。它也可以作为定制不同版本表单的起点。
     


TRvCustomConnection组件介绍

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

TRvCustomConnection组件
     
描述:

      通过数据连接组件的事件,你可以定制数据以何种方式送到你的Rave报表.对于使用TRvCustomConnection的非数据库数据,你会想要通过这些事件得到可以使用的所有数据。
对于数据库数据连接组件象TRvDataSetConnection,你仅仅想要覆盖OnValidateRow事件.
      注意:   TRvCustomConnection组件有一个整型的DataIndex和DataRows属性.他们用于自定义连接器事件,可以和OnFirst,   OnNext和OnEOF事件一起使用.   DataIndex用作
数据指针位置,它以0为首行.   DataRows指明数据的行数.例如,如果你为内存数组定义一个自定义数据连接,你仅需要初始化Connection.DataRows属性为内存数组中的元素数量
然后让Rave处理OnFirst,   OnNext   和   OnEOF事件.在OnGetRow事件中,你将存取Connection.DataIndex属性区确定哪个数据被传回来(记住对于首行DataIndex为0).

事件:
     
      OnGetCols
     
      这个事件当Rave要检索数据的元数据信息时被调用,在该事件中你可为你的数据中的每个字段(列)调用Connection.WriteField方法。WriteField定义如下:
     
      procedure   WriteField(Name:   string;DataType:   TRpDataType;Width:   integer;FullName:   string;Description:   string);
     
      Name是该字段的短名称,它只能包含文字和数字字符。DataType是下列所示的数据类型之一:dtString,dtInteger,   dtBoolean,   dtFloat,   dtCurrency,   dtBCD,  
      dtDate,   dtTime,   dtDateTime,   dtBlob,   dtMemo   或   dtGraphic。Width是和该字段宽度相关的字符。Full   name是字段名称的更详细的描述,它可以包括空格和其他
      非字母数字字符。如果Full   name为空白,那么Name将用作字段的full   name。Description是一个完整的字段描述,由于它用memo组件来编辑所以可以包含多行内容。使用
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • cg1120
  • (代码最优化-§惟坚韧者始能遂其)
  • 等 级:
  • 2

    3

#11楼 得分:0回复于:2003-01-16 08:31:59
            定位数据指针到首行的时候调用该事件
           
      举例:
           
            procedure   TDataForm.CustomCXNFirst(Connection:   TRvCustomConnection);
            begin
                  Seek(DataFile,0);
                  BlockRead(DataFile,DataRecord,SizeOf(DataRecord),DataRead);
            end;
     
      OnNext
     
            移动数据指针到下一行的时候被调用
           
      举例:
            procedure   TDataForm.CustomCXNNext(Connection:   TRvCustomConnection);
            begin
                  BlockRead(DataFile,DataRecord,SizeOf(DataRecord),DataRead);
            end;  
           
      OnEOF
     
            判断数据指针是否超过文件的结尾处,如果没有行或者在OnNext事件中已经移到最后一行时触发该事件。
           
      举例:
     
            procedure   TMainForm.CustomCXNEOF(Connection:   TRvCustomConnection;var   EOF:   Boolean);
            begin
                  EOF   :=   DataRead   OnGetRow
     
            检索当前行数据时触发该事件。Rave有好几种方法用来写数据到指定的缓冲区。字段的顺序和类型必须完全匹配在OnGetCols事件中提供的字段的定义。
           
            下面是Connection对象提供的用来写数据到数据缓冲区的函数列表
     
            procedure   WriteStrData(FormatData:   string;NativeData:   string);   {   dtString   }
            procedure   WriteIntData(FormatData:   string;NativeData:   integer);   {   dtInteger   }
            procedure   WriteBoolData(FormatData:   string;NativeData:   boolean);   {   dtBoolean   }
            procedure   WriteFloatData(FormatData:   string;NativeData:   extended);   {   dtFloat   }
            procedure   WriteCurrData(FormatData:   string;NativeData:   currency);   {   dtCurrency   }
            procedure   WriteBCDData(FormatData:   string;NativeData:   currency);   {   dtBCD   }
            procedure   WriteDateTimeData(FormatData:   string;NativeData:   TDateTime);   {   dtDate,   dtTime   and   dtDateTime   }
            procedure   WriteBlobData(var   Buffer;Len:   longint);   {   dtBlob,   dtMemo   anddtGraphic   }
           
            有个特别的方法WriteNullData   (no   parameters),可以用于包含未初始化或null数据的任何字段的调用。FormatData参数常用于为该字段传递预先格式化的字符数据。
            NativeData参数用于传递字段的未格式化的或Raw数据,如果特定的格式在Rave报表中定义,那么格式将应用到NativeData。如果没有特定的格式在Rave报表中定义,那么
            FormatData将被用来打印。
     
            举例:
           
            procedure   TDataForm.CustomCXNGetRow(Connection:   TRvCustomConnection);
            begin
                  With   Connection   do   begin
                        WriteIntData( ' ',DataRecord.IntField);
                        WriteStrData( ' ',DataRecord.StrField);
                        WriteFloatData( ' ',DataRecord.FloatField);
                  end;   {   with   }
            end;            
     
            OnValidateRow
           
                  这个事件用来控制是否你允许当前的行包括在报表中。
                 
            举例:
           
            procedure   TDataForm.CustomCXNValidateRow(Connection:   TRvCustomConnection;var   ValidRow:   Boolean);
            begin
                  ValidRow   :=   DataRecord.FloatField   > =   0.0;
            end;
           
            OnRestore
           
                  中止并恢复数据会话到先前状态时触发该事件。在这个事件中你可以关闭数据文件,释放资源以及恢复数据到OnOpen事件触发时的状态
                 
            举例:
           
                  procedure   TDataForm.CustomCXNRestore(Connection:   TRvCustomConnection);
                  begin
                        CloseFile(DataFile);
                  end;

TRvNDRWriter组件介绍

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

TRvNDRWriter组件
     
描述:

      TRvNDRWriter组件和TRvRenderPrinter及TRvRenderPreview一起用特定的二进制格式存储报表直到它被打印或预览。
     
属性和事件

      TRvNDRWriter拥有属性和事件来控制文件输出。AccuracyMethod使字符串在打印预览的中显示的更精确。当StreamMode属性不是smUser时候
FileName属性中的文件将被创建。一个大报表(页数多于10页或有许多图片)应该使用smFile。而对于小报表(页数少于10页)则应使用smMemory。
调用Execute方法发送报表到文件。


Rendering组件介绍

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

TRvRenderPreview描述

      TRvRenderPreview组件接收TRvNDRWriter组件生成的文件并发送到屏幕打印。TRvRenderPreview拥有许多方法和事件允许程序员创建完全自定义的用户界面。
     
TRvRenderPreview
 
      ScrollBox定义报表在预览时候的TScrollBox组件。FileName和StreamMode的用法和它们在TRvNDRWriter、TRvRenderPreview中的用法一样。GridHoriz
和GridVert定义水平和垂直间距,RulerType和网格的设置一起配合使用可以使报表不用进行打印输出就可以精确的确定报表中各个项目的位置。MarginMethod和
MarginPercent确定围绕页面的空白页边距的方法和尺寸。ShadowDepth定义每页阴影的像素数目。Monochrome定义是采用单色还是彩色图像输出。
NextPage和PrevPage用来进行页面跳转。ZoomInc定义ZoomIn和ZoomOut的数量用于修改当前缩放的百分数因子(ZoomFactor)

TRvRenderPreview事件
     
      当前页被改变并允许程序员用新的页做当前页来更新用户界面时触发OnPageChange。当前的缩放因子被改变时触发OnZoomChange。
   
TRvRenderPrinter描述

      TRvRenderPrinter组件接收由TRvNDRWriter组件产生的文件并发送到当前打印机。TRvRenderPrinter经常用于从预览屏幕打印。TRvRenderPrinter
是一个简单的组件,但拥有可以定制打印的方法和属性。

TRvRenderPrinter属性和事件
     
      如果StreamMode是smMemory或smFile,FileName则是TRvNDRWriter生成的报表文件的名称。当程序员想要提供自己的流对象(TStream的任何子类)并分把它
配给TRvNDRWriter的Stream属性时,streammode应该为smUser。

TRvRenderPDF描述

      TRvRenderPDF允许从报表中生成PDF文档。设置EmbedFonts为True可以让字体嵌入到PDF文档中。PDF中图像的质量可以用一个使用百分比的ImageQuality属性来设置。
设置UseCompression为True可以生成压缩的PDF文档。首先要uses   ZLib,在OnCompress事件中的代码如下
With   TCompressionStream.Create(clMax,   OutStream)   do  
      try
            CopyFrom(InStream,   InStream.Size);
      finally
            Free;
end;

      让应用程序拥有rendering能力最简单的方法是在一个表单上放一个render组件,它会自动注册格式并带有TRvSystem的标准设置和预览对话框。如果希望得到更多自动rendering
的方法,可以调用Render方法并传给它一个NDR   TStream对象或一个NDR文件的文件名作为参数。

TRvRenderHTML描述

      TRvRenderHTML转换一个NDR流或文件为HTML网页。支持文本,图像,线条和方框对象。输出结果为HTML4.0格式且匹配打印输出。
     
TRvRenderRTF描述

      TRvRenderRTF转换一个NDR流或文件为RTF格式。RTF文档的输出结果匹配报表的打印格式。文档中的元素被独立的包含在 "frames "中支持精确的页面定位。
     
TRvRenderText描述

      TRvRenderText转换一个NDR流或文件为文本格式,在这个报表中只支持文本项,其他的对象如图形或线条将被忽略。为了匹配最终的输出设备,CPI属性允许每英寸字符被定义而LPI属性
允许每英寸的线条被定义。注意最终文本文件到打印机的输出可能不匹配CPI和CPL的设置,因为没有特定的命令格式被插到文本文件中。


TRvProject组件介绍

原作:dever           分类:RAVE

--------------------------------------------------------------------------------

      TRvProject组件主要提供对用Rave创建的可视报表的访问。一般来说在应用程序中只有一个TRvProject组件。但是你如果需要可以使用多个。ProjectFile
属性定义你的应用程序保存报表定义的工程文件。这个文件名有一个.RAV的扩展名,需要的话可以包含许多报表定义。当TRaveReport的Open方法被调用,报表工程
文件将被加载到内存用来准备打印或终端用户的修改。在你不再需要工程文件或者关闭你的应用程序之前你必须确保调用Close方法。如果报表工程发生任何的改变,
你可以调用Save方法保存它们。TRvProject也有几个属性和方法,比如SelectReport,GetReportList,   ReportDescToMemo,   ReportDesc,   ReportName   和
ReportFullName都可以让它简单为你的用户创建更有效的交互界面。

Engine属性

      TRvProject的Engine属性允许你定义可选的输出引擎。它允许你通过TRvSystem组件或由TRvNDRWriter生成的NDR流或文件定义定制的的设置和预览屏幕。
     
使用TRvProject      

      下面是一系列关于在你的应用程序中使用TRvProject组件的基础步骤
      1.调用RvProject.Open打开在ProjectFile属性中的报表项目
      2.调用RvProject.GetReportList(ListBox1.Items,true)来加载在listBox中的一列报表。
      3.无论什么时候用户单击ListBox1(ListBox1.OnClick),调用RvProject.SelectReport(ListBox1.Items[ListBox1.ItemIndex],true),然后调用
      RvProject.ReportDescToMemo(Memo1)并选择当前的报表以及复制报表的描述信息到Memo1。
      4.调用RvProject.Execute打印当前选择的报表
      5.调用RvProject.Design开始终端用户对当前选择的报表的设计工作(仅对于End   User   Designer   License   (EUDL)有效).
      6.调用RvProject.Close关闭报表项目然后释放使用的内存
     
      这只是对于一