delphi回调函数

 

文章来源:
http://anony3721.blog.163.com/blog/static/5119742010866050589/

 

一.主单元

 1 unit UnMain;
 2 
 3 interface
 4 
 5 uses
 6   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 7   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.jpeg,
 8   Vcl.ExtCtrls;
 9 
10 type
11   TFrmMain = class(TForm)
12     Edit1: TEdit;
13     Button1: TButton;
14     Image1: TImage;
15     procedure Button1Click(Sender: TObject);
16   private
17     { Private declarations }
18     procedure Test(str:string); {定义一个用于回调的过程}
19   public
20     { Public declarations }
21   end;
22 
23 var
24   FrmMain: TFrmMain;
25 
26 implementation
27 {引用子窗体单元}
28 uses UnChild;
29 {$R *.dfm}
30 
31 procedure TFrmMain.Button1Click(Sender: TObject);
32 begin
33   {调用Unit2的接口方法}
34   CallUnit2(test);
35 end;
36 
37 {回调过程的实现部分}
38 procedure TFrmMain.test(str: string);
39 begin
40   {将str值副给Edit1}
41   Edit1.Text:=str;
42 end;
43 
44 end.
View Code

二.子单元

 1 unit UnChild;
 2 
 3 interface
 4 
 5 uses
 6   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 7   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 8 
 9 type
10    TFuncCallBack = procedure(str:string) of object;
11   TFrmChild = class(TForm)
12     Edit1: TEdit;
13     Button1: TButton;
14     procedure Button1Click(Sender: TObject);
15   private
16   public
17     {定义一个回调函数类型的变量}
18     aFuncCallBack:TFuncCallBack;
19   end;
20    {提供给Unit1调用的接口方法,注意里面的参数的类型}
21     procedure CallUnit2(FuncCallBack:TFuncCallBack);
22 var
23   FrmChild: TFrmChild;
24 
25 implementation
26 
27 {$R *.dfm}
28 {接口方法的实现部分}
29 procedure CallUnit2(FuncCallBack:TFuncCallBack);
30 begin
31   Application.CreateForm(TFrmChild,FrmChild);
32   {将参数赋值给FuncCallBack}
33   FrmChild.aFuncCallBack:=FuncCallBack;
34   FrmChild.ShowModal;
35 end;
36 
37 procedure TFrmChild.Button1Click(Sender: TObject);
38 begin
39   {当点击Form2的按钮时将Form2中的Edit的值传递给了Form1中的Edit}
40   {是不是很神奇?我并没有uses Unit1,但却改变了Form1中Edit的Text属性}
41   aFuncCallBack(Edit1.Text);
42   ModalResult:=mrOk;
43 end;
44 
45 end.
View Code

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值