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


りんこ  2008-07-25 18:48:38  No: 31363  IP: 192.*.*.*

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-25 19:08:07  No: 31364  IP: 192.*.*.*

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

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

編集 削除