有四个窗体a1,a2,a3,a4都继承自窗体a.
在对这四个窗体部分初始化代码中,数据全来自一个表,只是查询条件不同。
select * from t1 where type=1
 .....select * from t1 where type=2
 .....select * from t1 where type=3
 .....select * from t1 where type=4
 .....其中省略号部分为几十行完全相同的代码。
本来可以把以上代码分别放在四个窗体中,只是这样重复代码太多,好像不符OO设计
现在想把
select * from t1 where type=val
 .....
做为一个过程放在窗体a中,而在创建时a1...等窗体时只需赋予不同一个值val,不知怎么做?

解决方案 »

  1.   

    窗体a设置一个属性变量val,创建时a1...等窗体时只需赋予不同一个值val
      

  2.   

    窗体a中
    sql.clear;
    sql.add('select * from t1 where type=:val');有四个窗体a1,a2,a3,a4中在打开数据集前parameters.ParamByName('val).Value:=1;以上代码记得加上with dataset
      

  3.   

    1 可以用一个过程(全局的或子类中),在过程的参数中传递type
    2  另外,如果不是考虑实时性,建议你用filter而不是对每一次都用select 在数据库中查询