Delphi函数指针的两种定义(对象方法存在一个隐藏参数self,所以不能相互赋值)
2015-12-29 23:58
555 查看
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为类方法)的原因!
http://blog.csdn.net/procedure1984/article/details/3897155
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为类方法)的原因!
http://blog.csdn.net/procedure1984/article/details/3897155
相关文章推荐
- Delphi中的内存对齐 与 Packed关键字
- delphi 更改DBGrid 颜色技巧
- DELPHI的BPL使用
- delphi 统计运行时间
- delphi 使用TDatabase连接 sql server的方法
- delphi根据汉字生成拼音,全拼,或者带空格,或者不带空格
- Delphi:GLScene报错Need at least OpenGL version 1.1的解决方法
- Delphi 执行控制台(console)程序获取返回结果
- 关于Delphi错误:Cannot make a visible window modal
- delphi中exit,abort,break,continue 的区别
- Delphi IOS MusicPlayer 锁屏运行学习
- zw.delphi不同版本程序运行速度测试
- 升级旧Delphi应用转向支持手机的一个思路
- Delphi 调试连接 任意Android手机/平板/盒子
- 无损音乐下载器 Delphi版
- delphi 屏幕截屏
- delphi版本对应
- Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)
- 关于delphi中记事
- Delphi中调用API函数经验点滴(三)