program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils; type
//定义一个对象事件方法
TCallbackFunc = function (i: Integer): Integer of object; TMyCallBackObject = class
private
FcallBack: TCallbackFunc;
function SetcallBack(const Value: TCallbackFunc): Integer; public
function call(param: Integer): Integer;
end; TA = class
public
function doSomeThing(i: Integer): Integer;
end; {TA}
function TA.doSomeThing(i: Integer): Integer;
begin
Result := i;
end; var
c: TMyCallBackObject;
I: Integer;
t: TA; { TMyCallBackObject } function TMyCallBackObject.call(param: Integer): Integer;
begin
Result := ; if Assigned(FcallBack) then
//调用
Result:= FcallBack(param); end; function TMyCallBackObject.SetcallBack(const Value: TCallbackFunc): Integer;
begin
Self.FcallBack := Value;
end; begin
c := TMyCallBackObject.Create;
t := TA.Create; c.SetcallBack(t.doSomeThing);
I := c.call(); write(i);
Readln;
c.Free;
t.Free; end.

回调函数

回调(CallBack)函数就是一种两个对象之间的通知方法。被通知者事先约定好发生某种情况时的处理函数,在该情况发生时发起通知者调用该处理函数以完成回调

类似观察者模式, 一个对象(发布者)内部公布一个接口(TCallBackFunc), 对它感兴趣的类(TA)(订阅者)实现的具体执行方法(doSomething)

http://www.cnblogs.com/pengshaomin/archive/2012/09/29/2708923.html

delphi 回调函数的更多相关文章

  1. Delphi回调函数及其使用

    Delphi回调函数及其使用 1 回调函数的概述 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象.全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的 ...

  2. Delphi回调函数的使用-例子

    Delphi回调函数的使用-例子 功能大体描述:Form1中有一个Edit和一个Button,当点击BUTTON时弹出FORM2,FORM2中也有一个EDIT和一个BUTTON,当点击FORM2中的B ...

  3. 转:Delphi 回调函数及例子

    http://anony3721.blog.163.com/blog/static/5119742010866050589/ { http://anony3721.blog.163.com/blog/ ...

  4. delphi回调函数

    文章来源: http://anony3721.blog.163.com/blog/static/5119742010866050589/ 一.主单元 unit UnMain; interface us ...

  5. delphi回调函数高级应用

    用法一 Type TProc=procedure() of object; procedure Callback(proc:TProc); begin ... end; procedure mypro ...

  6. Delphi对象变成Windows控件的前世今生(关键是设置句柄和回调函数)goodx

    ----------------------------------------------------------------------第一步,准备工作:预定义一个全局Win控件变量,以及一个精简 ...

  7. DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)

    函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...

  8. 终于懂了:Delphi消息的Result域出现的原因——要代替回调函数的返回值!(MakeObjectInstance不会帮助处理(接收)消息回调函数的返回值)

    MakeObjectInstance应该不会帮助处理(接收)消息回调函数的返回值,可是有时候又确实需要这个返回值,这可怎么办呢?我是看到这段文字的时候,想到这个问题的: 当WM_PAINT不是由Inv ...

  9. [教程]Delphi 中三种回调函数形式解析

    Delphi 支持三种形式的回调函数 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer ).在 Delphi 中声明一般为 ...

随机推荐

  1. 浅尝key-value数据库(一)——一览NoSQL

    浅尝key-value数据库(一)——一览NoSQL 最近由于一个项目的关系,研究了一下key-value数据库这个最近很火的概念.本系列从项目需求的角度分析并测试了几个key-value数据库的性能 ...

  2. android内存的一点优化

    android手机给应用分配的内存通常是8兆左右,如果处理内存处理不当很容易造成OutOfMemoryError,我们的产品出现最多的错误也是OutOfMemoryError的异常, 在解决这个异常时 ...

  3. MSSQL - 尚未备份数据库 xxxx 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLA

    此错误的原因是:你的数据库服务器中存在同名数据库! RESTORE DATABASE  [student] FROM  DISK = N'G:\备份文件'  WITH  FILE = 1, MOVE ...

  4. WCF技术剖析之十一:异步操作在WCF中的应用(上篇)

    原文:WCF技术剖析之十一:异步操作在WCF中的应用(上篇) 按照操作执行所需的资源类型,我们可以将操作分为CPU绑定型(CPU Bound)操作和I/O绑定型(I/O Bound)操作.对于前者,操 ...

  5. [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传

    原文 [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传 Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件 ...

  6. @Autowired 注释与@Qualifier 注释

    @Service("OrganDaoIbatis") public class OrganDaoIbatis extends BaseDao implements IOrganDa ...

  7. Spring Tool Suite(简称STS)针对SimpleDateFormat.pase函数的实参值不做检验,异常直接默认值之

    Spring Tool Suite(简称STS)是 Spring 团队开发的一款基于Eclipse的IDE,旨在简化开发Spring MVC 应用的流程.可以自动生成spring相关的配置文件.比如a ...

  8. 在Android手机上获取其它应用的包名及版本

    转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAP ...

  9. jsonp与cors跨域的一些理解

    浏览器的同源策略,即是浏览器之间要隔离不同域的内容,禁止互相操作. 比如,当你打开了多个网站,如果允许多个网站之间互相操作,那么其中一个木马网站就可以通过这种互相操作进行一系列的非法行为,获取你在各个 ...

  10. 例解 autoconf 和 automake 生成 Makefile 文件

    本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...