FastReport VCL报表控件开发者手册三:事件处理程序介绍
如果事件处理程序不属于基类的话,如何定义一个新的事件处理程序呢?本文中就以“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; InitControl(FEdit); ... end; procedure TfrxEditControl.DoOnChange(Sender: TObject); begin { call event handler } if Report <> nil then Report.DoNotifyEvent(Sender, FOnChange); end;
值得注意的是,FastReport VCL报表中的事件处理程序是一个定义在报表脚本中的程序。TfrxNotifyEvent类型被声明为String[63],在FastReport VCL中,链接事件处理程序的是一个包含名称的字符串。