Описание обработчиков событий
Как быть, если необходимо определить новый обработчик события, которого нет в базовом классе? Рассмотрим это на примере элемента управления TfrxEditControl
:
TfrxEditControl = class(TfrxDialogControl)
private
FEdit: TEdit;
{ новое событие }
FOnChange: TfrxNotifyEvent;
procedure DoOnChange(Sender: TObject);
...
public
constructor Create(AOwner: TComponent); override;
...
published
{ новое событие }
property OnChange: TfrxNotifyEvent read FOnChange write FOnChange;
...
end;
constructor TfrxEditControl.Create(AOwner: TComponent);
begin
...
{ подключаем наш обработчик }
FEdit.OnChange := DoOnChange;
InitControl(FEdit);
...
end;
procedure TfrxEditControl.DoOnChange(Sender: TObject);
begin
{ вызываем обработчик события }
if Report <> nil then
Report.DoNotifyEvent(Sender, FOnChange);
end;
Здесь необходимо отметить следующий момент. Обработчик события в FastReport - это процедура, объявленная в скрипте отчета. Ссылкой на такой обработчик будет строка, содержащая его имя. Поэтому, например, в отличие от делфийского типа TNotifyEvent
, который является адресом метода, тип обработчика в FastReport - строковый (тип TfrxNotifyEvent
объявлен как String[63]).