RAVE中TRvCustomConnection组件介绍

来源:互联网 发布:在淘宝买游戏号安全吗 编辑:程序博客网 时间:2024/06/12 01:13
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;