Delphi CreateOleObject Veranstaltungen
-
30-09-2019 - |
Frage
Es gibt einen Code:
var
myobject: OleVariant;
begin
myobject := CreateOleObject('SomeNamespace.SomeClass');
end;
Dieses COM-Objekt hat Ereignisse (zB OnClick). Wie soll ich auf diese Ereignisse verbinden, ohne den Import TLB?
Lösung
Sie arbeiten mit COM späten Bindung, so brauchen Sie eine Menge Code zu behandeln Ereignisse schreiben. Diese Aufgabe ist nicht schwierig, wenn Sie COM wissen, haben im Grunde Sie diese Schritte ausführen müssen.
- Erstellen Sie ein neues Objekt (Klasse), abgeleitet von
TInterfacedObject
dass ArbeitsgeräteIDispatch
- implementieren, um die
Invoke()
Funktion Ihrer neue Klasse - Abfrage für den Verbindungspunkt Container (
IConnectionpointContainer
) und die gewünschte Verbindungspunkt. - sinken die Verbindungsstelle mit
IConnectionPointContainer.FindConnectionPoint
- schließlich führen Sie die
IConnectionPoint.Advise()
mit Ihrer Umsetzung dieIDispatch
Sie Beispiele für diese Implementierung auf diesen Links finden können
-
Wie ein Objekt Ereignis erstellt mit CreateOleObject verwenden -
Delphi 5 läuft Powerpoint (zB mit einem späten Bindungsobjekt mit Ereignissen) - Delphi 5 läuft Powerpoint (Beispiel eine späte Bindung mit Objekt mit Ereignissen)
versuchen, diese Links für weitere Informationen über COM, späte Bindung und Ereignisse
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow