[翻译]Event Handler Description 事件处理描述

Posted 十年磨一剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[翻译]Event Handler Description 事件处理描述相关的知识,希望对你有一定的参考价值。

Event Handler Description 事件处理描述 (自定义控件)

 

How should a new event handler be defined if it does not already belong to the base class? Let‘s look at this using the “TfrxEditControl” common control as an example:

一个新的事件处理程序应该如何定义,如果它不属于基类?让我们看看使用“TfrxEditControl“控件为例:

TfrxEditControl = class(TfrxDialogControl)

private

FEdit: TEdit;

{ new event }

FOnChange: TfrxNotifyEvent;   //定义事件,注册类型。

procedure DoOnChange(Sender: TObject);   //事件处理过程

...

public

constructor Create(AOwner: TComponent); override;

...

published

{ new event }

property OnChange: TfrxNotifyEvent read FOnChange write FOnChange;  //定义事件

...

end;

constructor TfrxEditControl.Create(AOwner: TComponent);

begin

...

{ connect our handler }

FEdit.OnChange := DoOnChange;   //在Create中关联事件(把TEdit控件的事件关联到自己的过程中)

InitControl(FEdit);

...

end;

procedure TfrxEditControl.DoOnChange(Sender: TObject);

begin

{ call event handler }

if Report <> nil then

Report.DoNotifyEvent(Sender, FOnChange);   //处理事件(在过程中调用报表里的脚本)

end;

 

It is important to note that the event handler in FastReport is a procedure defined in the report script. The TfrxNotifyEvent type is declared as String[63] and in FastReport the link to the handler is a string containing its name. This is unlike the Delphi TNotifyEvent type, in which it is a method address.

很重要的提示,事件处理程序是在报表脚本中定义的过程。TfrxNotifyEvent 类型被声明为String[63],并且在FastReport链接的事件处理过程是一个字符串(包含它的名字)。这个不像Delphi中的TNotifyEvent 类型,它是一个方法的地址。

以上是关于[翻译]Event Handler Description 事件处理描述的主要内容,如果未能解决你的问题,请参考以下文章

linux kernel的中断子系统之:High level irq event handler

ACE_Event_Handler:事件响应入口

JS-实时修改在textarea里面的span(实际输入的文字)

如何跨 AppDomains 订阅事件(object.Event += handler;)

事件处理器Event Handler

NET问答: 如何从 event 中移除所有的 handler ?