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 のイベント ハンドラーは、レポート スクリプトで宣言されたプロシージャであることに注目することです。その名前を含んでいる文字列が、ハンドラーへのリンクになります。そのため、Delphi の TNotifyEvent 型を例にとると、これはメソッドのアドレスで、ハンドラーの型ですが、FastReport ではこれは文字列です(TfrxNotifyEvent 型は String[63] として宣言されています)。

    Back to top © Copyright Fast Reports Inc.