我在函数中动态创建了一个TADOQuery和TADOConnection,请问怎么写ADOQuery的
BeforePost,AfterPost和OnPostError。

解决方案 »

  1.   

    以BeforePost为例
     在form中定义一个过程
        procedure XXXXBeforePost(DataSet: TDataSet);
    ...
    ADOQuery1.OnBeforePost :=XXXXBeforePost;
      

  2.   

    但是我事件中要调用那个临时创建的TADOConnection的BeginTrans,CommitTrans等方法,如果事先写好会出没有声明类型的错啊!
      

  3.   

    你要临时创建TADOConnection总是要在Interface部分申明的吧,AdoC: TADOConnection,只要你声明了就不会出错!
      

  4.   

    我的TADOConnection是在自定义的函数中声明的,和TADOQuery一样是一个局部变量!
      

  5.   

    那我建议你在Interface区类的Private里声明就行了!
      

  6.   

    如果你的事件在用到这个TADOConnection实例时,如果在这之前如果你没有声明这个变量,也就是说对你的事件是不可见的,那么就会有错误。为什么一定要局部的呢?在类里面声明私有变量同样能达到封装的效果。
      

  7.   

    局部的?
    这样试试
    procedure outer_procedure;
    var
      procudre xxxproc;
      begin
        //do something here;
      end;
      adocon :TADOConnection
    begin
      adocon.OnBeforePost := xxxproc;
      ...
    end;