Delphi CreateOleObjectイベント
-
30-09-2019 - |
質問
コードがあります:
var
myobject: OleVariant;
begin
myobject := CreateOleObject('SomeNamespace.SomeClass');
end;
このcomオブジェクトにはイベントがあります(たとえば、onclick)。 TLBをインポートせずにこれらのイベントに接続するにはどうすればよいですか?
解決
あなたはcomの遅い拘束力を持っているので、イベントを処理するためにたくさんのコードを書く必要がありますか?このタスクは、COMを知っていれば難しくありません。基本的には、これらの手順に従う必要があります。
- 派生した新しいオブジェクト(クラス)を作成します
TInterfacedObject
それは実装していますIDispatch
- 実装します
Invoke()
新しいクラスの機能 - 接続ポイントコンテナのクエリ(
IConnectionpointContainer
)および目的の接続ポイント。 - 使用して接続ポイントを沈めます
IConnectionPointContainer.FindConnectionPoint
- 最後に実行します
IConnectionPoint.Advise()
の実装を使用しますIDispatch
これらのリンクでこの実装の例を見つけることができます
CreateOleObjectを使用して作成されたオブジェクトイベントの使用方法Delphi 5 Running PowerPoint(イベントを備えた後期バインディングオブジェクトを使用した例)- Delphi 5ランニングPowerPoint (イベントを使用して遅いバインディングオブジェクトを使用した例)
com、遅い拘束力、イベントの詳細については、これらのリンクをお試しください
所属していません StackOverflow