★怎样在继承的时候(即inherited的时候),传递一个参数给父类过程?
譬如,我想传递一个当前子窗口的记录集 TADODataSet 给父窗口,让父
窗口的过程去执行相应操作,怎么做?

解决方案 »

  1.   

    ta=class
       procedure dosomething;virtual;
       procedure do ;
    end;
    tb=class(ta)
      procedure dosomething;override;可以在这个过程写代码
    end;
    procedure ta.do;
    begin
     dosomething;
    end;
      

  2.   

    ta=class
       procedure dosomething(AOwner:TComponent);virtual;
    end;
    tb=class(ta)
      procedure dosomething;override;
    end;
    procedure tb.dosomething;
    begin
      //子类的代码
      ...
      inherited dosomething(AOwner);
    end;
      

  3.   

    在父类过程中设置参数:如  T1 = class
        procedure A(DataSet: TDataSet);virtual;
      end;  T2 = class(T1)
        procedure A(DataSet: TDataSet);override;
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ T1 }procedure T1.A(DataSet: TDataSet);
    begin
      if DataSet <> nil then
      begin
        ShowMessage( DataSet.Name);
      end;
    end;procedure T2.A(DataSet: TDataSet);
    begin
      inherited;
      //完整的写法是:  inherited A(DataSet);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      t: T2;
    begin
      t := t2.Create;
      t.A(table1);
      t.Free;
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  4.   

    楼主,你的问题是循环单元引用,在编程中是禁止的,如果一定要用的话,可以参见《DELPHI5指南》的介绍了,
      

  5.   

    lxpbuaa(桂枝香在故国晚秋) 说得很清楚了