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
.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值