level 8
1、调用者怎么接受通知消息
2、第一个红框是什么意思
2018年08月02日 11点08分
2
level 12
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为类方法)的原因!
==================================================
回到你第一个问题“调用者怎么接受通知消息”
首先,你这段代码不完整,很明显OnAccumulated没有赋值。结果就是什么都不会发生。
调用者必是一个对象/类
它的定义里就会有,如:
TCaller=class
private
...
public
procedure Accumulate(Sender: TAccumulatedthread);
end;
var Caller:TCaller;
线程创建中,或者刚启动时OnAccumulated:=Caller.Accumulate;
这样调用ONACCUMULATED的时候就会触发CALLER的类方法,CALLER通过SENDER知道是谁具体触发的。
2018年08月03日 03点08分
3
谢谢,你的回到很详实。我需要好好理解下
2018年08月05日 13点08分