请帮忙指点一下,多谢!(100分)

  • 主题发起人 主题发起人 snowdeep
  • 开始时间 开始时间
S

snowdeep

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TfrmMainWindow.dxBarButton35Click(Sender: TObject);
begin
inherited;
BillSelect(EXIST_ASSEMBLY);
end;
以上的过程, 我对 inherited 始终理解不透,看了语言的书籍解释,但没有一个具体的实例辅助一下,还是似懂非懂,不知道这样用的作用和意义究竟何在,谁能给具体解释一下,我这个菜鸟感激不尽!
 
Delphi 5 开发人员指南 将近两页的介绍,可以参考一下。
 
当当前窗体有父窗体的时候,它可以继承父窗体上的该事件。
inherited的作用就是在当前窗体的事件中继承父窗体(类)的事件。inherited之后或之前再可以添加一些语句来增加工作内容。
 
inherited為繼承之前事件所做的東西,這樣你就不用再把之前的事件再做遍了..
 
不好意思,还是不明白,和书上讲的差不多啊,能不能举一个具体的例子说明一下?多谢多谢!
 
比如,你建一个工程,新增一个窗体Form1,加上了一个TButton,并建立其Click事件如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('父窗体的事件');
end;
然后,你再增加一个窗体,是用继承Form1的方式加上的,即File->New->Other...打开一个对话框New Items,上面有好多个面板,其中一个面板的名字是你的工程文件名,点中这个,上面显示的是你的已有Form图标列表,选中Form1,此时面板下部的inherit单选项是默认选中的。点OK,生成了新的Form2!
此时的Form2是继承了Form1的,继承了Form1窗体的所有方法和属性,包括上面所举的Button1和其click事件。此时你点Form2上的Button1建立其Click事件,会得到:
procedure TForm2.Button1Click(Sender: TObject);
begin
inherited;//这里出现了继承命令。
end;
你可以在inherited;之前或之后加上子窗体中要做的语句,如:
procedure TForm2.Button1Click(Sender: TObject);
begin
inherited;//这里出现了继承命令。
showmessage('子窗体的事件');
end;
那么当程序运行时,你点击了Form2上的Button1时,会先执行父窗体上的Button1事件(即从inherited继承的语句),弹出一个提示框:“父窗体的事件”;后执行子窗体上的加入的语句(即inherited之后的语句),弹出又一个提示框:“子窗体的事件”。

当然你还可以改成:
procedure TForm2.Button1Click(Sender: TObject);
begin
showmessage('子窗体的事件');
inherited;
end
再看一下这个效果。
再试试看,你删除Form2上的Butto1,Form1上的Button1未受任何影响;
但是你删除Form1上的Button1,Form2上的Button1不见了!怎么样?看清楚了没?
最后的建议,看书要看活,不要看死!自己动手做一下吧!
 
把inherited看作一个函数调用好了,它调用的父类的同名的函数。
 
谢谢bjaman,
这下彻底明白了,
再次感谢bjaman!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部