经常遇到这样的问题,比如:
if not assigned(Form) then
     Form:=TForm.create... //如果窗体很多就得重复写这样的代码,不能重用;
----------------------------或者: 
with query do begin
   sql.add....
   open;
end;
这样类似的代码很多,内容一样,就是变一个组件名或窗体名就可以重用;比如10个不同名称的窗体,不需要每次都写,付给不同的窗体名做参数,调用一个过程就可以了。
请问这个如何实现呢?

解决方案 »

  1.   

    我也碰到类似的问题。。说出来看看是不是个解决方法我先做了一个查询数据库的类,所有需要对数据库操作的函数全在类里面,对于函数的写法很简单,比如查询两个字段:
    procedure (out fields0,fields1:string;Sqlstr:string,i:integer);
    begin
    MyAdoquery:=Adoquery.create;
      case i of 
      1:Myadoquery:=BaseQuery;
      2:MyAdoQuery:=FeeQuery;
      3....
      end;
      With MyAdoQuery do begin 
       Close ;
       Sql.Text:=Sqlstr;
       Open ;
       Fields0:=Feidls[0].AsString;
       Fields1:=Fields[1].AsString;
       Close;
      end;
      FreeAndNil(MyAdoQuery);
      
    然后可以用overload再做一些查询三个或更多字段的函数。
      

  2.   

    有点象工厂方法模式
    请参照刘艺的《Delphi模式编程》