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
Вы можете найти примеры этой реализации по этим ссылкам
Как использовать событие объектов, созданное с использованием CreateOleObjectDelphi 5 работает PowerPoint (пример с использованием позднего объекта привязки с событиями)- Delphi 5 работает PowerPoint (Пример, используя поздний объект привязки с событиями)
Попробуйте эти ссылки для получения дополнительной информации о COM, поздних связывающих и событиях
Не связан с StackOverflow