zoukankan      html  css  js  c++  java
  • Delphi回调函数的使用-例子

    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.

  • 相关阅读:
    学习:多项式算法----FWT
    学习:多项式算法----FFT
    学习:STL----优先队列
    Python中pip安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection
    ELK集群redis服务因数据量太大导致内存使用率暴涨故障修复
    zabbix 历史数据存入elasticsearch
    elk+filebeat+redis日志系统部署
    Linux 服务守护脚本
    Nginx 配置临时维护页
    Linux DDos防御
  • 原文地址:https://www.cnblogs.com/wxb-km/p/3523697.html
Copyright © 2011-2022 走看看