请问(50分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
有这么一段程序:
Procedure TAboutForm.URLink (URL:PChar);
begin
ShellExecute(0,nil,URL,nil,nil,SW_ShowMaximized);
end;


procedure TAboutForm.Label3Click(Sender: TObject);
begin
inherited

URLink('http://www.ibm.com');
end;

我想问一问:加“inherited”和不加“inherited”有没有区别?是不是减少
一些错误?
 
不是吧,我前几天看书,好像这个字是关于类继承的,可能是用来覆盖父类方法的。
不过我是菜鸟一个,不敢保真
 
加了会在这执行父类的同名方法,一般有些是必须的
不加则只执行在这里所写的语句. 一般只有类继承重载方法是用
你的这个好象不该加
 
inherited是指要执行父类定义的该函数。
对于labelclick,我想不用inherited吧。
 
我领先6秒, :))
 
SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE) or
ES_NUMBER)
使用以后,就只接受数字了。
但是还是要处理它的OnChange事件,因为以上方法都不能防止用户用“粘贴“命令
往编辑框中加入非数字字符,很多第三方的商业控件也都有这个缺陷。

 
对不起,回答错问题了,其实在OnClick事件中,DELPH已经默认调用了Inherited
方法,然后再执行你的代码,Inherited倒是经常在自已编写控件中使用。是调用
默认方法没错,因为在自己编写控件时,我们可以自行决定是否要用原控件的方法。
 
同意 cch_b, 这点可在一个 ModalResult 设为 mrOk 的按钮的单击事件中得到
验证,只要你单击这个按钮,form 总是会关闭(除非你在其中调用了abort),所以
OnClick 事件是先执行了父类的 Inherited 方法以后,才执行你的代码的
 
但是什么时候可以加,什么时候不可以加呢?
 
在编写标准事件时都不要加,比如OnClick,OnMouseMouse等,一般只在编写
控件时加。比如你要写一个新的BUTTON控件,如果你不在它的OnPaint中加Inherited,那么那东东就面目全非了,因为它的Inherited就是要画出它的外
形。如果不加的话,那就要自己动手画BUTTON的外形了,也就是说,你可以改变
外的外观了,一个新的控件就产生了。
这东东三言两语说不清,建议你好好学习Object Pascal

 
多人接受答案了。
 
后退
顶部