继承类中的事件不作为!不作为!急切等待中... 我有一个三级的窗口类继承。form3->form2-form1。其中form1中有一个dbgrid控件。我想在form3中的dbgrid控件的DBGridDrawColumnCell事件中完成一些功能,当将这些代码放在form3中,不执行啊!其中form2,form1中都没有在该事件中写代码啊!但是,当我将同样的代码放在form2相应事件中的时候,代码的到了执行!请问这是为什么?如何解决啊!谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一直记的 DELPHI不支持类的多继承。 但是支持接口的多继承 我查下先。可能真的错了,不好意思 错了,多重继承可以的,多继承不行...嘿嘿...搂住在试一试,如果你的几个form的关系是form3->form2->form1儿子 父亲 爷爷的话应该是可以的... 多重继承?我怎么觉得楼主的意思是“多层继承”不知道我理解得对不对,楼主是不是说Form3是Form2的子类,而Form2是Form1的子类。问题是Form3的某个事件处理代码执行不到,而把代码写在Form2中对应的事件处理函数中就能执行到。 确定创建的是Form3类吗 ?有没有用AS操作符强转成父类Form2 ? 一个老子可以有几个儿子一个儿子只会有一个老子!楼主咋写的我不知道这样写肯定没问题 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; 每一个类都有自身的一个VMT,你当然只有创建了一个Form3才能执行Form3里面的函数。 结贴了!问题就是我重新创建就可以了。也许这是bug吧!谢谢各位! 怎么会是BUG!明明是你的理解有问题!! 庆祝CSDN挂后重生,饭后结帖 显示乱码如何解决? 招人 从sql中取出数据并通过从clientdataset存为一个xml文件,为什么会出现乱码? 过程参数传递的问题,请高手帮忙解决。 怎样扫描一行打印一行? QuickReport的打印问题:QRExpr组件的使用 如何将远程数据库中的某个表复制到本地? 怎么把过程for循环换个Time Delphi强制结束某程序进程的办法? Indy控件作邮件收发断开时提示“Connection Closed Gracefully”!如何处理? 求助 ,各位大哥,请您们给我一套好看的按钮图标把,谢谢
DELPHI不支持类的多继承。
但是支持接口的多继承
我查下先。可能真的错了,不好意思
搂住在试一试,如果你的几个form的关系是
form3->form2->form1
儿子 父亲 爷爷
的话应该是可以的...
楼主是不是说Form3是Form2的子类,而Form2是Form1的子类。问题是Form3的某个事件处理代码执行不到,而把代码写在Form2中对应的事件处理函数中就能执行到。
有没有用AS操作符强转成父类Form2 ?
一个儿子只会有一个老子!楼主咋写的我不知道这样写肯定没问题
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;