procedure TFw_Dialog_Cmp_Form.FormCreate(Sender: TObject);
begin
  inherited;  //这里是继承什么呢?
  qryData.KeyFields := 'PROCSYS_ID;COMPONENT_FID';
end;今天看别人写的一个小模块。里面的过程到处都是inherited,起什么作用呢?我是菜鸟。哪位能说说这里为什么要用inherited,什么一般时候用呢?

解决方案 »

  1.   

    procedure TFw_Dialog_Cmp_Form.FormCreate(Sender: TObject); //sender后面指出父类
    begin
      inherited;  //  继承父类的此事件
      qryData.KeyFields := 'PROCSYS_ID;COMPONENT_FID';
    end;
      

  2.   

    继承父类的属性取个简单例子 你就知道怎么回事啦你新建一个form1  把其 close事件中加入 
    active:=free;然后 点击file -new->other->project1 (注意不是project 是该项目的名称)此页面中选中form1  确定 在新建的这个窗口就继承了 父类的窗体属性你在form2中的close事件中 双击进去之后可以
     inherited;这就是他的作用啦  听懂了吧
      

  3.   

    子类复写父类同名方法时,Inherited; 可以在子类此方法中保留父类同名方法的动作;如父类方法showinfo中有一个ShowMessage('Is Father'); 则在子类中复写此方法时,若加Inherited;,则其执行时到Inherited;处时会跳出'Is Father'框,即进入了父类同名方法,执行完再回来接着执行子类方法中动作;若不用Inherited;,那么就不会跳出'Is Father'框而只会执行子类方法中动作。说的多态在此表现更强,即代码复用功能,一个Inherited;就继承的父类同名方法的所有动作,子类复写再加强其功能即可
      

  4.   

    --------------------------------------------------------------------------------哦!是这样,好像和C++中的表达方式不是太一样...我还有一个问题to weizi2000(秋风啊) ,比如我现在看到有个过程:procedure TestProcedure(Sender: TObject)
    begin
      inherited;
      ......
    end;那我如何才能知道知道他到底继承了他的父类的什么属性/方法呢?也就是说,他的父类中到底写了些什么?如何看到?
      

  5.   

    procedure TestProcedure(Sender: TObject)它继承自TObject 祖先类具体继承了什么属性/方法,要看具体的环境的...
      

  6.   

    要看继承谁的属性 
    你可以看type  TForm2 = class(TForm1)
    这里就可以看出 form2 继承了form1 的属性  
    那你就可以找到form1去看看他到底有什么属性如果你在看form1时又有 type  TForm1 = class(TFormfather)
    那你就去看formfather这个窗体的具体属性依此类推  你可以找到他到底继承谁的属性啦
      

  7.   

    inherited;  //这里是继承什么呢?
    说明你现在编译的这个窗体是继承与摸一个父窗体的,所以加上inherited;  ,是在你处理你这个新窗体的事件的时候,如果父窗体也有同样的这个事件的话,编译器要先处理父窗体的这个事件后,才会、出来你和个事件~!