ITPub博客

首页 > Linux操作系统 > Linux操作系统 > delphi中回调函数差异

delphi中回调函数差异

原创 Linux操作系统 作者:uuxa 时间:2010-10-28 23:30:32 0 删除 编辑

回调函数有两种形式,用在类里面的和类外的。前者在定义回调函数时需要在声明最后加上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博客 ” ,链接:http://blog.itpub.net/7416120/viewspace-1040547/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    111
  • 访问量
    282564