私は次のような状況に陥ります。Delphi組み込みコールバック関数
1つのコンポーネントを作成しました。私は1つのメソッドを使用するとき、コンポーネントからいくつかのフィードバックを得たいと思います。
同様のcomponent.Method(param1:コールバック関数);
これまでにすべて良好で光沢があります。
プロジェクトのユニットは次のとおりです。
form主な目に見える形。
dataModule - コンポーネントを操作しています。
フォームは、フィードバックを受け取るためにデータモジュールに1つのコールバック関数を渡す必要があります。このコールバック関数は、コンポーネントとは異なる関数です(より多くのパラメータを持ちます)。
私はこれを行う方法を知らない。
TFeedBackProcedure = procedure(param1 : Integer) of object;
TFeedBackProcedureByTypeOf = procedure(aTypeOf : Integer; param1 : Integer) of object;
// component
procedure Syncro(feedBack : TFeedBackProcedure);
begin
//somewhere inside
for i := 0 to 15 do begin
feedBack(i);
end;
end;
// the feeedback received so far when someone use the Syncro procedure is the value of i
// the datamodule
// inside of a method I need to pass also the i received from compoent also a typeof value used only inside datamodule
procedure UseMethod(feedbackProcedure : TFeedBackProcedureByTypeOf); // the extended callback
begin
typeof = 1;
if component.Syncro(???) then begin // <-------- how to ???
// do stuff
end;
end;
// the main form
// the real callback function
procedure TFormMain.Feddback(aTypeOf : Integer; param1: Integer);
begin
if aTypeOf = 0 then begin
label1.caption = IntToStr(param1);
end else begin
label2.caption = IntToStr(param1);
end;
end;
// usage of datamodule
procedure TFormMain.btn1Click(Sender: TObject);
begin
dataModule.UseMethod(Feddback);
end;
これを行うための他の方法?一番簡単な方法は、また、それようTFeedbackProcedure
の型宣言を変更することがありますが、コンポーネントを自分で書いた場合
TKSのたくさん
はRazvan