3

イベントが発生したときにプロシージャを実行したい。しかし、その手続きは別の手続き( SetNotifierProc)によって設定されています。

まず、これを実行します:

SetNotifierProc(Proc1);

そして、Proc1イベントがトリガーされるたびに実行されます。

プロシージャを引数として取得するコードSetNotifierProcと、そのプロシージャを実行するようにイベント ハンドラに通知する方法を教えてください。

問題:TCPServerExecute受信したデータを表示する手順を実行したいと考えています。しかし、複数のフォームがあるため、受信したデータを処理するプロシージャを設定したいと考えています。

ありがとう

4

2 に答える 2

3

プロシージャが引数のない通常のプロシージャの場合:

Type
  TForm1 = Class(TForm)
    ..
     private

     FMyProc : TProcedure;
   public
     procedure SetEventProc(aProc : TProcedure);
     procedure TheEvent( Sender : TObject);
  end;

procedure Test;
begin
  // Do something
end;

procedure TForm1.SetEventProc(aProc: TProcedure);
begin
  Self.FMyProc := aProc;
end;

procedure TForm1.TheEvent(Sender: TObject);
begin
  if Assigned(FMyProc) then
    FMyProc;
end;

// to set the callback to procedure "Test"
Form1.SetEventProc(Test);

プロシージャに引数がある場合は、プロシージャ タイプを宣言します。

Type
  MyProcedure = procedure( aString : String);

また、プロシージャがメソッドの場合:

Type
  MyMethod = procedure( aString : String) of Object;

に関するドキュメントも参照してくださいProcedural types

于 2013-08-06T08:27:44.510 に答える