可以将此过程写在一个公共的UNIT内,加个参数aQuery:Tadoquery;
如 :
procedure dosomething(aQuery:Tadoquery);
begin
  aQuery.close;
  .......... 
  ...........
end;
然后各处调用即可。

解决方案 »

  1.   

    把SQL语句拿出来吧,作为参数传递进去,这样通用性更好一些。
    procedure dosomething(aQuery:Tquery;aSQL:string);
    begin
    aQuery.close;
    .......... 
    aQuery.SQL.Add(aSQL);
    end;
      

  2.   

    unit3procedure PubProcedure(sender:tobject);
    begin
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select * from ok');
    adoquery1.sql.open;
     。
     。
    end;___________
    unit2
    uses unit3
    ...Form2.OnCreate:=PubProcedure;___________
    unit1
    uses unit3
    ...Form1.OnCreate:=PubProcedure;
      

  3.   

    最好编写一个共用的单元,把常用的函数和过程都放在这个单元内。这样在各个Form中,只要use这个单元,就可以共享这些函数和过程。
      

  4.   

    新添加一个没有Form的unit,将此过程写在这个unit中(记住要放在public中)供其他unit调用就可以了。不放在有Form的unit中,这样可以防止动态Creat Form可能出现的错误。
      

  5.   

    可以教你DLL,email吧,顺便给点分。
      

  6.   

    procedure  dosomething(aQuery:Tquery;aSQL:string);
      begin
      aQuery.close;
      aQuery.sql.clear;
      aQuery.sql.add('aSQL');
      aQuery.sql.open;
       。
       。
      end;
      
    procedure  Tfrom1.FormGreate(sender:tobject);
    begin
      dosomething(adoquery1,'select  *  from  ok');
    end;procedure  Tfrom2.FormShow(sender:tobject);
    begin
      dosomething(adoquery1,'select  *  from  ok');
    end;
      
      
      

  7.   

    在dll里要挂数据库,我用了两个存储过程,是BDE的,每一个都要有一个session,否则不行的。
    dll也不是很复杂,不过要使用form的话必须传递程序的handle,让你的程序来维护这个form。