delphi 回调函数
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 回调函数的更多相关文章
- Delphi回调函数及其使用
		Delphi回调函数及其使用 1 回调函数的概述 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象.全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的 ... 
- Delphi回调函数的使用-例子
		Delphi回调函数的使用-例子 功能大体描述:Form1中有一个Edit和一个Button,当点击BUTTON时弹出FORM2,FORM2中也有一个EDIT和一个BUTTON,当点击FORM2中的B ... 
- 转:Delphi 回调函数及例子
		http://anony3721.blog.163.com/blog/static/5119742010866050589/ { http://anony3721.blog.163.com/blog/ ... 
- delphi回调函数
		文章来源: http://anony3721.blog.163.com/blog/static/5119742010866050589/ 一.主单元 unit UnMain; interface us ... 
- delphi回调函数高级应用
		用法一 Type TProc=procedure() of object; procedure Callback(proc:TProc); begin ... end; procedure mypro ... 
- Delphi对象变成Windows控件的前世今生(关键是设置句柄和回调函数)goodx
		----------------------------------------------------------------------第一步,准备工作:预定义一个全局Win控件变量,以及一个精简 ... 
- DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)
		函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ... 
- 终于懂了:Delphi消息的Result域出现的原因——要代替回调函数的返回值!(MakeObjectInstance不会帮助处理(接收)消息回调函数的返回值)
		MakeObjectInstance应该不会帮助处理(接收)消息回调函数的返回值,可是有时候又确实需要这个返回值,这可怎么办呢?我是看到这段文字的时候,想到这个问题的: 当WM_PAINT不是由Inv ... 
- [教程]Delphi 中三种回调函数形式解析
		Delphi 支持三种形式的回调函数 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer ).在 Delphi 中声明一般为 ... 
随机推荐
- 从底层简析Python程序的执行过程
			摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追 ... 
- 基于visual Studio2013解决C语言竞赛题之0609矩阵处理
			 题目 
- MySQL主键添加/删除
			2改动数据库和表的字符集alter database maildb default character set utf8;//改动数据库的字符集alter table mailtable defaul ... 
- Windows Services的1053错误的解决办法之一:修改注册表允许的响应时间
			Error: 'The service did not respond in a timely fashion' (ServicesPipeTimeout) when attempting when ... 
- hdu2489 Minimal Ratio Tree
			hdu2489 Minimal Ratio Tree 题意:一个 至多 n=15 的 完全图 ,求 含有 m 个节点的树 使 边权和 除 点权和 最小 题解:枚举 m 个 点 ,然后 求 最小生成树 ... 
- ZOJ 3790 Consecutive Blocks 模拟题
			problemCode=3790">Consecutive Blocks 先离散一下,然后模拟,把一种颜色i所在的位置都放入G[i]中.然后枚举一下终点位置,滑动窗体使得起点和终点间花 ... 
- 《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合
			讲完了class文件里的常量池,我们就相当于克服了class文件里最麻烦的模块了.如今,我们来看一下class文件里紧接着常量池后面的几个东西:訪问标志.类索引.父类索引.接口索引集合. 1. 訪问标 ... 
- 如何制定AxureRP设计体系
			经常有朋友问我,如何在从来没有用过AxureRP的公司或者团队里面开始使用AxureRP做原型设计?这个问题对个体来说不存在,因为个人学习使用AxureRP时非常快速的,基本试着做几个原型实例就能把整 ... 
- Winfrom 文本框回车进入下一个个单元格(TextBox)
			1.重写方法 OnShown protected override void OnShown(EventArgs e) { base.OnShown(e); foreach (Control ct i ... 
- Socket开发时,Available为0,实际还有数据的问题
			这段时间处理Socket通讯,比如文件传输,通常代码如下: string filename = @"c:\abc.txt"; // 发送文件名字符串长度(测试代码,实际请传输字符串 ... 
