首页 > Linux操作系统 > Linux操作系统 > delphi中回调函数差异
回调函数有两种形式,用在类里面的和类外的。前者在定义回调函数时需要在声明最后加上of object以区分在类外调用情况。具体举例如下,
[@more@]类外情况:
TCallBack = procedure(Param1: Integer;Param2: String;...ParamX...);
TXClass = class(TObject)
FCallBack: TCallBack;
property OnCallBack: TCallBack read FCallBack write FCallBack;
procedure CallBack(Param1: Integer;Param2: String;...ParamX...);
TXClass.CallBack(Param1: Integer;Param2: String;...ParamX...);
begin
if Assigned(FCallBack) Then
FCallBack(Param1, Param2,...ParamX...);
end;
类中情况:
TCallBack = procedure(Param1: Integer;Param2: String;...ParamX...) of object;
这两者的差异是,当在类中定义回调函数时,如果声明回调函数类型时不加 of object那么,你在类内部自定义的回调函数便不可以指定给回调函数,即,如下这样非法,
假定回调函数类A,和使用回调函数类B,在B类中自定义了回调函数SomeCallBack,则,如下这样赋值delphi会提示非法,
A.OnCallBack := B.SomeCallBack;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7416120/viewspace-1040547/ ,如需转载,请注明出处,否则将追究法律责任。