网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Delphi/Pascal-> TRvCustomConnection组件介绍

TRvCustomConnection组件介绍
作者:佚名 来源:InterNet 加入时间:2004-11-22
相关文章 相关书籍:
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;
 

[文章录入员:fightter]

相关文章 相关书籍:
本站推荐内容

近期主机类热搜关键词:
美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

Delphi/Pascal
C/C++/VC
C++Builder
Basic/VB类
Delphi/Pascal
Java编程
FORTRAN
其它
电脑教程阅读排行
·DELPHI下的多线程程序设计(...
·Delphi与Excel的亲密接...
·Delphi实现串口通信的常用的...
·Delphi中初始化.Ini文件...
·Delphi中用于读写(I/O)...
·谈谈Delphi中的类和对象
·Delphi编译错误中文手册
·Delphi中关于TApplic...
·OPENGL图形程序设计
·SQL的基本操作