菜鸟,请问语言基础问题~~~~~ 学习中,发现这句:TNotifyEvent = procedure(Sender: TObject) of object;不太明白,什么意思? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那怎么用呢?和平常procedure xxx(...);有什么区别? 也不懂不过葵花保碘上有这一段--------------不同于一般的procedure或者function,在Delphi中属于某个类的方法称为method,它们的声明一般为AProcMethod:procedure(Sender:TObject) of object;为什么一定要加上of object呢?实际上,Object Pascal中一般的函数指针就相当于普通的指针,而AProcMethod则是一个对指针,它在Delphi中有一个对应的类型:TMethod。TMethod=record Data, Code:Pointer;end;所以,我们在单元中可以这样:procedure TForm1.Button1Click2(Sender:TObject);begin ShowMessage(‘Click2!’);end; procedure TForm1.FormCreate(Sender:TObject);var Method:TMethod;begin Method.Data := Self; Method.Code := MethodAddress(‘Button1Click2’); Button1.OnClick := TNotifyEvent(Method);end;当然,实际上只需要Button1.OnClick=Button1Click2即可;不过,这样可以让你明白在幕后发生的事情。值得注意的一点是,Button1Click2应该声明在published段(或者和其他构件的声明放在一起,因为默认作用域就是published),以便编译器为它产生RTTI信息,否则程序可能达不到预期的效果。 type TNotifyEvent = procedure(Sender: TObject) of object;这个东东,是过程类型,更准确是一个方法类型。 同意楼上 psp2003() 观点。这种情况只在写控件时定义新的事件时使用。 SQLConnection1 问一个小问题,高手看一下,谢谢! 关于监控打印 通过COM端口发送AT指令的问题 请问这个编译错误是什么意思 lkrq like '%2002-12-17 12:29:00%',报错!(lkrq是日期型) 如何把建立的数据库放在SQL服务器默认的DATA路径下?? 如何在程序里对指定的日志文件操作 一个傻问题:怎样打印dbgrid中的内容呢? 谁有advlistview 1.5 的源代码? 上海delphi程序员,工资标准多少啊 帮朋友问2,求程序算法原码??
和平常procedure xxx(...);有什么区别?
不过葵花保碘上有这一段
--------------
不同于一般的procedure或者function,在Delphi中属于某个类的方法称为method,它们的声明一般为AProcMethod:procedure(Sender:TObject) of object;为什么一定要加上of object呢?实际上,Object Pascal中一般的函数指针就相当于普通的指针,而AProcMethod则是一个对指针,它在Delphi中有一个对应的类型:TMethod。TMethod=record Data, Code:Pointer;end;所以,我们在单元中可以这样:procedure TForm1.Button1Click2(Sender:TObject);begin ShowMessage(‘Click2!’);end; procedure TForm1.FormCreate(Sender:TObject);var Method:TMethod;begin Method.Data := Self; Method.Code := MethodAddress(‘Button1Click2’); Button1.OnClick := TNotifyEvent(Method);end;当然,实际上只需要Button1.OnClick=Button1Click2即可;不过,这样可以让你明白在幕后发生的事情。值得注意的一点是,Button1Click2应该声明在published段(或者和其他构件的声明放在一起,因为默认作用域就是published),以便编译器为它产生RTTI信息,否则程序可能达不到预期的效果。
这种情况只在写控件时定义新的事件时使用。