Delphi 匿名函数的几个实际应用(一)

包含如下的六个部分:

 

Anonymous Event Handlers  匿名事件处理器

Timing Anonymous Methods 计时功能匿名方法

Thread Synchronization with the VCL    VCL线程同步

Parallel For Loop  并行循环

AJAX in Delphi  Delphi AJAX

Debating the AJAX Demo AJAX应用的辩论

 

 

 

匿名事件处理器

 

 

早期时候,Delphi有一个很特别的特性,就是可以用方法指针实现事件处理器。现在使用更高级的匿名方法,更加有效使用这个特性,可以绑定一个新的行为到一个事件,优点是:

 ①无需声明独立的方法,并且能捕获方法的执行上下文,

 ②也就避免了方法传参时,添加额外的字段到表单。

 

 

 下面的例子,给按钮添加了一个匿名点击事件,声明了一个常规的方法指针类型,并且给自定义按钮类添加一个新的事件处理器。

 

 

这个类的代码很容易理解,setter方法保存新的指针,Click方法在处理标准过程之前调用它(当可用时,调用OnClick事件处理)。

 

 

 

 

 

 怎样使用这个新的事件处理函数?一般来说你为它可以指定一个匿名方法来使用它。

 

 

 

似乎这样使用没有意义,因为可以使用通常方法达到这个效果。下面,为了显示不同,用匿名方法捕获一个组件指针,这个组件的指针指定了一个事件处理函数,通过Sender的指向参数。

 

 

可以临时指定一个局部变量,作为Sender匿名方法的参数,隐藏btnKeepRefClick方法的Sender参数:

 

 

 当你按下btnInvoke按钮,妳可以看到组件名标题与指定的匿名函数处理器:

 

 一个更复杂的情况通过下面的两个按钮演示处理,通过点击表单接收一个匿名方法处理器,分辨鼠标左键或右键,并且捕获鼠标点击位置:

 

 

 

这是另一个捕获执行上下文的例子,但是这次同时有两个捕获操作(每一个的数据都保持在内存),并且可以处理更多。为了使用方法指针实现相同的操作,你必须保持一个鼠标点击数组,捆绑到每一个目标组件,或者使用组件的Tag属性保存指针信息。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值