Delphi回调函数的使用-例子

功能大体描述:Form1中有一个Edit和一个Button,当点击BUTTON时弹出FORM2,FORM2中也有一个EDIT和一个BUTTON,当点击FORM2中的BUTTON时,将FORM2中的EDIT的TEXT属性赋值给FORM1中的EDIT的TEXT。

unit Unit1;

interface

uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs,StdCtrls;

type   TForm1 = class(TForm)     {主窗体中放一个Edit和一个Button}     Edit1: TEdit;     Button1: TButton;     procedure Button1Click(Sender: TObject);   private     { Private declarations }     {定义一个用于回调的过程}     procedure test(str:string);   public     { Public declarations }   end;

var   Form1: TForm1;

implementation {引用unit2} uses unit2; {$R *.dfm} {回调过程的实现部分} procedure TForm1.test(str: string); begin   {将str值副给Edit1}   Edit1.Text:=str; end;

procedure TForm1.Button1Click(Sender: TObject); begin     {调用Unit2的接口方法}     CallUnit2(test); end;

end.

unit Unit2;

interface

uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls;

type   {定义一个回调函数类型}   TFuncCallBack=procedure(str:string) of object;   TForm2 = class(TForm)     {Form2中也有一个Edit和一个Button}     Edit1: TEdit;     Button1: TButton;     procedure Button1Click(Sender: TObject);   private     { Private declarations }     {定义一个回调函数类型的变量}     aFuncCallBack:TFuncCallBack;   public     { Public declarations }   end;   {提供给Unit1调用的接口方法,注意里面的参数的类型}   procedure CallUnit2(FuncCallBack:TFuncCallBack);

var   Form2: TForm2;

implementation

{$R *.dfm} {接口方法的实现部分} procedure CallUnit2(FuncCallBack:TFuncCallBack); begin   Application.CreateForm(TForm2,Form2);   {将参数赋值给FuncCallBack}   Form2.aFuncCallBack:=FuncCallBack;

Form2.ShowModal; end; procedure TForm2.Button1Click(Sender: TObject); begin   {当点击Form2的按钮时将Form2中的Edit的值传递给了Form1中的Edit}   {是不是很神奇?我并没有uses Unit1,但却改变了Form1中Edit的Text属性}   aFuncCallBack(Edit1.Text);   ModalResult:=mrOk; end;

end.

Delphi回调函数的使用-例子的更多相关文章

  1. Delphi回调函数及其使用

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

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

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

  3. delphi回调函数

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

  4. delphi 回调函数

    program Project2; {$APPTYPE CONSOLE} uses SysUtils; type //定义一个对象事件方法 TCallbackFunc = function (i: I ...

  5. 回调函数callback使用例子

    代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <tit ...

  6. C++ 回调函数的简单例子(转)

    原文转自 http://blog.csdn.net/wnlwcg/article/details/6930990# 1.调用端 // 下面的这个_stdcall很重要的 void _stdcall T ...

  7. delphi回调函数高级应用

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

  8. 理解 JavaScript 回调函数并使用

    JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...

  9. javascript 函数初探 (四)--- 回调函数

    回调函数 既然函数与任何被赋值给变量的数据是相同的,那么她当然可以像其他数据那样被定义.删除.拷贝,以及当成参数传递给其它函数. 我们定义一个函数,这个函数有两个函数类型的参数,然后他会分别执行这两个 ...

随机推荐

  1. java 安装后 不能 java javac 说找不到命令 -bash: javac: command not found

    java 安装后 不能 java javac  说找不到命令 -bash: javac: command not found 不是环境变量的问题, 直接cd到java的目录 也不能执行命令 后来发现是 ...

  2. CentOs yum源安装 nginx

    1 更新源 [root@server ~]#rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.no ...

  3. Hibernate学习之属性级别注解

    © 版权声明:本文为博主原创文章,转载请注明出处 属性级别注解 添加方式 1. 写在属性字段上面 2. 写在属性getter方法上面 @Id:必须,定义了映射到数据库表的主键属性,一个实体可以有一个或 ...

  4. python在windows系统中打印中文乱码

    转自:http://www.111cn.net/phper/python/58920.htm 中文乱码对于程序开发人员来讲不是什么怪事情了,今天我在使用python打印中文时就出现乱码了,下面我们一起 ...

  5. Winform 动态 画图 不闪

    一.问题:解决winform动态画图闪的问题,网上搜的方法,大部分都是: “this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlSty ...

  6. mapreduce 查找共同好友

    A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A,C,D,E,F H:A,C,D,E,O I:A, ...

  7. NOJ1167 丑陋数 想法题

    题意 丑陋数n的意思是n的全部素数因子仅仅有2,3,5. 求出前1500个丑陋数. (第一个丑陋数是1) 思路 用一个数组维护全部的丑陋数. 一開始数组中仅仅有一个数就是1. 如今能够确定的丑陋数还有 ...

  8. 各种类型的电影排行榜-movie路线

    [最费脑力的14部电影]<盗梦空间>.<记忆裂痕>.<生死停留>.<死亡幻觉>.<禁闭岛>.<穆赫兰道>.<蝴蝶效应> ...

  9. 在Ubuntu下利用Eclipse调试FFmpeg

    [编辑]第一步:准备编译环境 .tar.bz2 -2245/ ./configure -linux-i586.tar.gz 解压后得到jre1.7.0_17目录 最后通过java -version检查 ...

  10. 传统数据仓库架构与Hadoop的区别

    一, 下面一张图为传统架构和Hadoop的区别 主要讲以下横向扩展和扩展横向扩展:(Mpp 是hash分布,具有20节点)添加新的设备和现有的设备一起提供负载能力.Hadoop中系统扩容时,系统平台增 ...