DELPHI自定义事件(本质就是构建自定义类)、运行时标准化事件调用TNotifyEvent及普通的标准化事件传递TObjectClick(Sender)

本文深入探讨了DELPHI中的自定义事件定义、运行时标准化事件TNotifyEvent的调用,以及普通标准化事件TObjectClick的使用。涵盖了自定义事件的构建原理,标准化事件在运行时的值传递,以及事件触发的实例分析。

DELPHI自定义事件(本质就是构建自定义类)、运行时标准化事件调用TNotifyEvent及普通的标准化事件传递TObjectClick(Sender)

一、自定义事件(本质就是构建自定义类)

参考:

http://docwiki.embarcadero.com/RADStudio/Rio/en/Creating_Events_-_Overview

http://docwiki.embarcadero.com/RADStudio/Rio/en/Defining_Your_Own_Events

http://docwiki.embarcadero.com/RADStudio/Rio/en/Procedural_Types_(Delphi)

:定义自己的事件:

 

转到创建事件索引

定义全新的事件是相对不寻常的。但是,有时候某个组件引入的行为与任何其他组件完全不同,因此您需要为其定义一个事件。

以下是定义事件时需要考虑的问题:

概念:

    任何1个控件,都有自身的N个事件属性,有些事件是按标准化事件定义的(即TNotifyEvent
 { 标准事件Standard eventsuses System.Classes;}
type
  TNotifyEvent = procedure(Sender: TObject) of object; //:1、通知 类的事件原型
  TGetStrProc = procedure(const S: string) of object;     //:2、通知并传递 类的事件原型

     不管哪种事件原型,它们都有1个共同特点,就是它们的程序类型,都是of object,即默认都传递了1个“不让你显式的看见的”TObject。

     事件本质:就是1个类。


     但是,并非所有的事件属性都是按标准化事件TNotifyEvent定义的,而是非标准化事件,当你要将这些非标准化事件和其它组件的属性和方法进行相互调用时,此时是比较困难的,解决方法,就是为它做1个自定义的事件。自定义事件并非要改写组件本身,而是要改变它的事件的触发和响应的行为,什么时候触发、怎样触发,响应成怎样的结果。

先看代码:(备忘查询目录:D:\PulledupO2O\WinPro\WinUtilsTests)

//type
  //TaEventFunc<T> = reference to function: T;
  //TaEventProc<T> = reference to procedure(
    //const AResult:T );

type
  TaEvent = procedure(ArrayT: TArray<string>;AProc:TProc) of object;
   //:1、如果你的程序类型参数中含有TObject(匿名过程TProc或匿名函数本身也是TObject)
     //:那么,程序类型后面就必须要加上of object
     //:然而任何事件本身就是1个带有默认TObject参数的程序类型,
       //:不管你是否传递带有TObject类型的参数
   //:2、上述代码是定义1个标准化事件的格式:后面必须加of object
     //:这里你定义为需要传两个参数的格式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专讲冷知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值