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.
Delphi回调函数的使用-例子的更多相关文章
- Delphi回调函数及其使用
Delphi回调函数及其使用 1 回调函数的概述 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象.全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的 ...
- 转: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 回调函数
program Project2; {$APPTYPE CONSOLE} uses SysUtils; type //定义一个对象事件方法 TCallbackFunc = function (i: I ...
- 回调函数callback使用例子
代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <tit ...
- C++ 回调函数的简单例子(转)
原文转自 http://blog.csdn.net/wnlwcg/article/details/6930990# 1.调用端 // 下面的这个_stdcall很重要的 void _stdcall T ...
- delphi回调函数高级应用
用法一 Type TProc=procedure() of object; procedure Callback(proc:TProc); begin ... end; procedure mypro ...
- 理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...
- javascript 函数初探 (四)--- 回调函数
回调函数 既然函数与任何被赋值给变量的数据是相同的,那么她当然可以像其他数据那样被定义.删除.拷贝,以及当成参数传递给其它函数. 我们定义一个函数,这个函数有两个函数类型的参数,然后他会分别执行这两个 ...
随机推荐
- 钩子编程(HOOK) 安装进程内键盘钩子 (1)
摘要:钩子能够监视系统或进程中的各种事件消息.截获发往目标窗体的消息并进行处理.这样,我们就能够在系统中安装自己定义的钩子,监视系统中特定事件的发生.完毕特定的功能,比方截获键盘.鼠标的输入.屏幕取词 ...
- Pig系统分析(7)-Pig有用工具类
Explain Explain是Pig提供的调试工具,使用explain能够输出Pig Lation的运行计划.值得一提的是,explain支持-dot选项.将运行计划以DOT格式输出, (DOT是一 ...
- ”非常危险“的Linux命令
Linux命令是一种很有趣且有用的东西,但在你不知道会带来什么后果的时候,它又会显得非常危险.所以,在输入某些命令前,请多多检查再敲回车. rm –rf rm –rf是删除文件夹和里面附带内容的一种最 ...
- oracle 11g r2 blob类型getString报错问题
摘要: 问题: 在hibernate中实体类中blob类型字段为 private String textBlob; 查询时报错: java.sql.SQLException: 无效的列类型: getS ...
- Effective C++ 49,50
49.熟悉标准库. C++标准库非常大. 首先标准库中函数非常多,为了避免名字冲突.使用命名空间std.而之前的库函数都存放于< .h>中,如今成为伪标准库.而不能直接将这些头文件所有直接 ...
- 写shader注意的一些报错
1.Shader warning in 'Custom/1': Both vertex and fragment programs must be present in a CGPROGRAM. Ex ...
- Java线程面试题:设计四个线程,其中两个线程每次对 j 加 1,另外两个每次对 j 减 1,程序如下。
package thread; /** * Java线程面试题 * @author zhongfg * @date 2015-06-16 */ public class ThreadInterview ...
- 【BZOJ1899】[Zjoi2004]Lunch 午餐 贪心+DP
[BZOJ1899][Zjoi2004]Lunch 午餐 Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时 ...
- EasyNVR无插件摄像机直播之:摄像机网页低延时无插件直播实现
背景需求 对于摄像机直播,客户反馈的最多就是实现web直播.摆脱插件,可以自定义集成等问题, 对于熟悉EasyNVR已经完美的解决了这些问题.然而对于web播放也存在一些问题,通常我们web播放RTM ...
- Asp.Net mvc4 项目 在vs中调试正常 在IIS发布后连接oracle数据库时提示数据库连接关闭
解决办法: 1.打开iis,找到发布的程序 2.右键单击“TAKANAPP” 从右键菜单选择“管理应用程序”--“高级设置....” 在打开的高级设置 面板 查看对应的应用程序池 名称 3.设置应用 ...