События Delphi CreateOleObject - PullRequest
       54

События Delphi CreateOleObject

3 голосов
/ 04 сентября 2010

есть код:

var 
myobject: OleVariant;
begin
 myobject := CreateOleObject('SomeNamespace.SomeClass');
end;

Этот COM-объект имеет события (например, OnClick). Как мне подключиться к этим событиям без импорта TLB?

1 Ответ

6 голосов
/ 05 сентября 2010

Вы работаете с поздним связыванием COM, поэтому вам нужно написать много кода для обработки событий.эта задача не сложна, если вы знаете COM, в основном вам нужно выполнить следующие шаги.

  • Создать новый объект (класс), производный от TInterfacedObject, который реализует IDispatch
  • реализует функцию Invoke() вашего нового класса
  • Запрос для контейнера точки подключения (IConnectionpointContainer) и требуемой точки подключения.
  • потопите точку подключения, используя IConnectionPointContainer.FindConnectionPoint
  • и, наконец, выполните IConnectionPoint.Advise(), используя вашу реализацию IDispatch

, которую выможно найти примеры этой реализации по этим ссылкам

попробуйте эти ссылки для получения дополнительной информации о COM, позднем связывании и событиях

...