DLLでのイベント発生について


りんこ  2008-07-26 03:48:38  No: 31363

DLLにて以下のように記述すると
【型に互換性がありません : メソッドポインタと通常の手続き】
のようなエラーメッセージがでます。
どこがおかしいのでしょうか?
また、どのようにすればいいのか教えてください。

procedure MyEvent(Sender: TObject);

procedure Dll_Start; stdcall; export;
begin
    MyCompo := TMyCompo.Create(Nil);
    MyCompo.OnMyEvent := MyEvent;
  end;
end;

コンポーネント側は以下のように定義しています。

type
  TMyEvent = procedure (Sender: TObject) of object;


ttt  2008-07-26 04:08:07  No: 31364

> type
>   TMyEvent = procedure (Sender: TObject) of object;
"of object" の部分に注目。
OnMyEventにはただの手続きは代入できません。
TFormなど何らかのオブジェクトのメソッドでないとダメ。
たとえば
 MyCompo.OnMyEvent := Form1.MyEvent;
みたいにならないといけないということです。

ヘルプで「メソッドポインタ」を調べると詳しい説明が出てきますよ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加