Search Results for

    Show / Hide Table of Contents

    Описание обработчиков событий

    Как быть, если необходимо определить новый обработчик события, которого нет в базовом классе? Рассмотрим это на примере элемента управления 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]).

    Back to top © 1998-2024 Copyright ООО «Быстрые отчеты»