eventi Delphi CreateOleObject
-
30-09-2019 - |
Domanda
C'è un codice:
var
myobject: OleVariant;
begin
myobject := CreateOleObject('SomeNamespace.SomeClass');
end;
Questo oggetto COM dispone di eventi (ad esempio Su clic). Come devo collegare a questi eventi senza importare TLB?
Soluzione
Si sta lavorando con COM late-binding, quindi avete bisogno di scrivere un sacco di codice a eventi manico. questo compito non è difficile se si sa COM, in fondo non è necessario eseguire questi passaggi.
- Creare un nuovo oggetto (classe) derivato da
TInterfacedObject
che implementaIDispatch
- implementare la funzione
Invoke()
della nuova classe - Domanda per il contenitore del punto di connessione (
IConnectionpointContainer
) e il punto di connessione desiderato. - affondare il punto di connessione utilizzando
IConnectionPointContainer.FindConnectionPoint
- , infine, eseguire il
IConnectionPoint.Advise()
utilizzando l'implementazione di ilIDispatch
è possibile trovare esempi di questa implementazione su questi link
-
Come utilizzare un evento oggetti creati utilizzando CreateOleObject -
Delphi 5 esegue PowerPoint (ad esempio utilizzando un ritardo oggetto con eventi) di legame - Delphi 5 esegue PowerPoint (ad esempio utilizzando un associazione tardiva oggetto con eventi)
provare questi link per maggiori informazioni su COM, late-binding e gli eventi
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow