子窗体控件事件与父窗体控件事件的问题

icemanpro 2009-12-17 02:27:22
现有Form1为父窗体,上有Tbutton1,其TButton1的onclick事件中,有个showmessage('1')。还有个Form2是继承于From1的。当运行时,点击Form2上的TButton1的话,并没有执行showmessage('1');



但如果Form2上的tButton1添加了onclick事件,就算不写任何代码的话,运行时,会执行父窗体中的button1的onclick事件。

这是怎么回事?
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yukileo 2009-12-17
  • 打赏
  • 举报
回复
inherited
先执行父类的过程.再执行自己的过程
例子:
B是继承A而来
而A里面有个过程hello
procedure A.hello;
begin
showmessage('hello');
end;

当你重写B里面的hello过程时
procedure B.hello;
begin
inherited //如果有这句..那么就会先弹出hello,再弹出world;
showmessage('world');
//inherited //如果放在这里..那么就先弹出world,hello;
//如果没有inherited ..那么直接弹出world
end;


idecl 2009-12-17
  • 打赏
  • 举报
回复
如果form2继承了form1,不需要增加onclick事件也会运行showmeesage('1')的

如果增加了onclick事件,一定会有一句inherited;,不会不会运行showmeesage('1')
bdmh 2009-12-17
  • 打赏
  • 举报
回复
如果第二个窗体中的button是继承自主窗体的话,默认就会执行父类窗体的button过程,除非你在子窗体的该button事件中写了代码,并且去掉了inherited这句
idecl 2009-12-17
  • 打赏
  • 举报
回复
不增加onclick事件也会呀,你是怎么创建第2个窗体的?
wintergoes 2009-12-17
  • 打赏
  • 举报
回复
Form2上tButton1的OnClick事件并没有赋值,当然不会响应了
就给我们要在Button上双击一下,产生OnClick的事件后
才会在占击的时候响应里面的代码
这个时候Button.OnClick := ButtonCLick;

这个是事件,必须赋值后才能被触发,而不是普通的函数

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧