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;
> type
> TMyEvent = procedure (Sender: TObject) of object;
"of object" の部分に注目。
OnMyEventにはただの手続きは代入できません。
TFormなど何らかのオブジェクトのメソッドでないとダメ。
たとえば
MyCompo.OnMyEvent := Form1.MyEvent;
みたいにならないといけないということです。
ヘルプで「メソッドポインタ」を調べると詳しい説明が出てきますよ。
ツイート | ![]() |