我有一个三级的窗口类继承。form3->form2-form1。其中form1中有一个dbgrid控件。我想在form3中的dbgrid控件的DBGridDrawColumnCell事件中完成一些功能,当将这些代码放在form3中,不执行啊!其中form2,form1中都没有在该事件中写代码啊!但是,当我将同样的代码放在form2相应事件中的时候,代码的到了执行!请问这是为什么?如何解决啊!谢谢!

解决方案 »

  1.   

    一直记的
     DELPHI不支持类的多继承。 
       但是支持接口的多继承
          我查下先。可能真的错了,不好意思
      

  2.   

    错了,多重继承可以的,多继承不行...嘿嘿...
    搂住在试一试,如果你的几个form的关系是
    form3->form2->form1
    儿子   父亲   爷爷
    的话应该是可以的...
      

  3.   

    多重继承?我怎么觉得楼主的意思是“多层继承”不知道我理解得对不对,
    楼主是不是说Form3是Form2的子类,而Form2是Form1的子类。问题是Form3的某个事件处理代码执行不到,而把代码写在Form2中对应的事件处理函数中就能执行到。
      

  4.   

    确定创建的是Form3类吗 ?
    有没有用AS操作符强转成父类Form2 ?
      

  5.   

    一个老子可以有几个儿子
    一个儿子只会有一个老子!楼主咋写的我不知道这样写肯定没问题
      TForm1 = class(TForm)
        Button1: TButton;
      public
        procedure MyButtonClick(Sender: TObject);virtual;
        constructor Create(AOwner: TComponent); override;
      end;constructor TForm1.Create(AOwner: TComponent);
    begin
      inherited;
      button1.OnClick:=MyButtonClick;
    end;
    procedure TForm1.MyButtonClick(Sender: TObject);
    begin
      showmessage('1111111111111');
    end;  TForm2 = class(TForm1)
      private
      public
        procedure MyButtonClick(Sender: TObject);override;
      end;procedure TForm2.MyButtonClick(Sender: TObject);
    begin
      inherited;
      showmessage('2222222222222222222222222222');
    end;  TForm3 = class(TForm2)
      private
      public
        procedure MyButtonClick(Sender: TObject);override;
      end;
    procedure TForm3.MyButtonClick(Sender: TObject);
    begin
      inherited;
      showmessage('3333333333333333333333');
    end;
      

  6.   

    每一个类都有自身的一个VMT,你当然只有创建了一个Form3才能执行Form3里面的函数。
      

  7.   

    结贴了!问题就是我重新创建就可以了。也许这是bug吧!谢谢各位!
      

  8.   

    怎么会是BUG!明明是你的理解有问题!!