我看有一句的代码声明着:public
oldnewrecord:  TDataSetNotifyEvent ;
.....procedure Donewrecord(dataset:Tdataset);
var
i :integer;
begin
  if (oldnewrecord) then oldnewrecord(dataset);
.....
end;
那在db单元里面:
type   TDataSetNotifyEvent   =   procedure(DataSet:   TDataSet)   of   object;这个 TDataSetNotifyEvent  是什么类型,做什么用的呢?大虾分析分析。多谢

解决方案 »

  1.   

    在 db 单元定义这么一个事件的结构,
    type  TDataSetNotifyEvent  =  procedure(DataSet:  TDataSet)  of  object;
    同时定义一个 TDataSetNotifyEvent   类型的属性
    如  property DataSetNotifyEvent : TDataSetNotifyEvent  read FDataSetNotifyEvent write SetDataSetNotifyEvent;
    在引用db的单元中,注册上这个事件,这样,在db 中 执行  if (oldnewrecord) then oldnewrecord(dataset);
    时,就相当 在 引用 db 的单元中 执行相关过程。
      

  2.   

    这种类型叫做对象指针类型这个类型,VCL中主要用来作为数据集控件中的通知事件用。
      

  3.   

    Donewrecord是一个自定义的处理新记录的事件
    它的执行过程:先找有没有原来的 新记录的事件,有则先执行原来的 新记录的事件
      

  4.   

    to #7DataSet不是有一堆BeforePost、AfterPost之类的事件么,它们的类型就是TDataSetNotifyEvent