RAVE中TRvCustomConnection组件介绍

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组件来编辑所以可以包含多行内
容。使用
   description属性来说明字段如何被使用以及关于字段数据的其他信息。
  
   举例:
   procedure TDataForm.CustomCXNGetCols(Connection: TRvCustomConnection);
   begin
      With Connection do begin
         WriteField('Index',dtInteger,8,'Index Field','Description 1');
         WriteField('Name',dtString,30,'Name Field','Description 2');
         WriteField('Amount',dtFloat,20,'Amount Field','Description 3');
      end; { with }
   end;
  
   OnOpen
  
   进行数据会话的初始化工作调用该事件。在这个事件中你可以打开数据文件,初始化变
量以及为在数据会话结束时引发的OnRestore事件保存当前的数据状态
  
   举例:
   procedure TDataForm.CustomCXNOpen(Connection: TRvCustomConnection);
   begin
      AssignFile(DataFile,'DATAFILE.DAT');
      Reset(DataFile,1);
   end;
  
   OnFirst
  
      定位数据指针到首行的时候调用该事件
     
   举例:
     
      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;
 
你可以在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显示报表.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值