TOnUserInfoShow = procedure(userName:string;userAge:Integer)of object;//定义事件模型中的回调函数原型

TUserInfo = class
private
FName:string;
FAge:Integer;
FOnUserInfoShow: TOnUserInfoShow;

procedure FSetAge(theAge:Integer);
public
property Name:string read FName;//只读属性(私有变量)
property Age:Integer read FAge write FSetAge;//读写属性(私有变量,私有方法)

property OnUserInfoShow:TOnUserInfoShow read FOnUserInfoShow write FOnUserInfoShow;//事件模型回调函数

constructor Create;
end;

Ps: 对于FAge,FSetAge等变量和方法,只需在property后声明好,直接Ctrl+shift+c,即可自动生成。

二.只读属性

构造函数

constructor TUserInfo.Create;
begin
Self.FName:='Terry';
Self.FAge:=20;
end;
读取只读属性

begin
Self.Memo1.Lines.Add('读取只读属性姓名:'+Self.theUserInfo.Name);
end;
运行

三.读写属性

构造函数

constructor TUserInfo.Create;
begin
Self.FName:='Terry';
Self.FAge:=20;
end;
修改读写属性,并读取新值

begin
Self.Memo1.Lines.Add('修改前的读写属性年龄为:'+inttostr(Self.theUserInfo.Age));
Self.theUserInfo.Age:=30;
Self.Memo1.Lines.Add('修改后的读写属性年龄为:'+inttostr(Self.theUserInfo.Age));
end;
运行

四.事件回调函数

主窗体成员函数

procedure TFrmMain.UserInfoShow(name: string; age: Integer);
begin
Self.Memo1.Lines.Add('用户姓名为:'+Self.theUserInfo.Name);
Self.Memo1.Lines.Add('用户年龄为:'+inttostr(Self.theUserInfo.Age));
end;
主窗体创建时,将函数指针赋值给“事件回调函数”

调用事件回调函数

begin
Self.theUserInfo.OnUserInfoShow(Self.theUserInfo.Name,Self.theUserInfo.Age);
end;
运行

http://blog.csdn.net/zisongjia/article/details/53674036

property的使用(事件可能就是回调函数)的更多相关文章

  1. C# dll 事件执行 js 回调函数

      C# dll 事件执行 js 回调函数   前言: 由于js 远程请求  XMLHttpRequest() 不支持多线程,所以用C# 写了个dll 多线程远程抓住供js调用. 最初代码为: C#代 ...

  2. socket.io笔记二之事件监听回调函数接收一个客户端的回调函数

    //服务端 socket.on('test', function (name, fn) { console.log(name) //输出yes fn('woot'); }); //客户端 socket ...

  3. C#将C++动态库的回调函数封装成事件

    关于C#调用C++动态库的文章很多,调用动态库中回调函数的方法也不在少数.但大多数调用回调函数的方法依然保留了C++的语法特点. 比如有一段C++的回调函数代码,为了表达它的意思,我把注释也粘贴了进来 ...

  4. Node.js:创建应用+回调函数(阻塞/非阻塞)+事件循环

    一.创建应用 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi.从这个角度看,整个"接收 HTTP ...

  5. Node js 安装+回调函数+事件

    /* 从网站 https://nodejs.org/zh-cn/ 下载 这里用的 9.4.0 版本 下载完安装 安装目录是 D:\ApacheServer\node 一路默认安装 安装后打开cmd命令 ...

  6. 小兔JS教程(三)-- 彻底攻略JS回调函数

    这一讲来谈谈回调函数. 其实一句话就能概括这个东西: 回调函数就是把一个函数当做参数,传入另一个函数中.传进去的目的仅仅是为了在某个时刻去执行它. 如果不执行,那么你传一个函数进去干嘛呢? 就比如说对 ...

  7. C++ 回调函数 实现 的测试代码

    最近项目里使用了异步Socket,使用的是完成端口做的e; Accept,receive,send 等完全的异步实现(多线程) 然后 又要多个端口使用, 后来想到包装下完成端口Socket,然后当有事 ...

  8. jQuery的deferred对象详解 jquery回调函数

    http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html jQuery的 ...

  9. 回调函数与DOM事件

    原文:http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/ 先看如下代码: document.addEventListener(&q ...

随机推荐

  1. Android项目如果要将自己写的类写成要单独打成jar包?

    需求条件: 自己没做过android,公司android开发临时有事请假了,老板说让我研究研究,反正都是java.我心里"XXXXXX".这篇用来自己做个记录,老手请略过,Andr ...

  2. C# 使用Emit深克隆

    原文:C# 使用Emit深克隆 有人问,复制一个类所有属性到另一个类有多少方法?这也就是问深克隆有多少个方法,容易想的有三个.直接复制,反射复制,序列化复制.但是性能比较快的有表达式树复制 IL复制两 ...

  3. webpack单独构建scss文件与.vue组件里构建scss的一个坑

    在入口main.js里构建scss是通过引入模块的方式 import './assets/_reset.scss'; import './assets/_flex.scss'; import './a ...

  4. CSS拾遗(一)

    重新看<精通CSS(第二版)>做一些记录,方便今后巩固. 1.外边距叠加 只有普通文档流中块框的垂直外边距才会发生外边距叠加.行内框.浮动框.或绝对定位框之间的外边距不会叠加. 2.相对定 ...

  5. TableLayout表格布局

    1.本节学习路线图 路线图分析: 从上面的路线图,可以看出TableLayout的用法还是很简单的,无非就是确定表格的行数,以及使用 那三个属性来设置每一行中的第某列的元素隐藏,拉伸,或者收缩即可! ...

  6. mkdir-无法创建目录(单层目录中子目录的个数默认为32000个)

    今天运行在一台机器上的脚本突然通知无法创建目录了,上去执行shell脚本,也出现同样的错误,如下: $ mkdir test mkdir: 无法创建目录"test": 过多的连接 ...

  7. HDU1078 FatMouse and Cheese 【内存搜索】

    FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. 王立平--GC

    Gabage Collection:垃圾回收 是.net中对内存管理的一种功能. 垃圾回收器跟踪并回收托管内存中分配的对象,定期运行垃圾回收以回收分配给没有有效引用的对象的内存. 当使用可用内存不能满 ...

  9. WPF 元素相对另外一个元素的 相对位置

    原文:WPF 元素相对另外一个元素的 相对位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/740 ...

  10. Android TV开发总结(七)构建一个TV app中的剧集列表控件

    原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ...