delphi中经常见到以下两种定义
Type
TMouseProc = procedure (X,Y:integer);
TMouseEvent = procedure (X,Y:integer) of Object;
两者样子差不多但实际意义却不一样,
TMouseProc只是单一的函数指针类型;
TMouseEvent是对象的函数指针,也就是对象/类的函数/方法
区别在于类方法存在一个隐藏参数self,也就是说两者形参不一样,所以不能相互转换
这也就是为什么delphi中可以这样赋值 button1.onClick:=button2.onClick;
却不能这样赋值 button1.onclick=buttonclick; (buttonclick为本地函数,button2.onclick为类方法)
的原因!
本文详细解析了Delphi编程语言中TMouseProc与TMouseEvent两种类型的定义及使用场景。TMouseProc是一种简单的函数指针类型,而TMouseEvent则是用于对象的方法指针类型,两者的主要区别在于是否存在隐含的self参数。
1233

被折叠的 条评论
为什么被折叠?



