![]() |
Ereignisprozedur an ActiveX Objekt übergeben
Hallo,
wie kann ich einem ActiveX Objekt, das mit CreateOleObject erzeugt wurde, eine Ereignisprozedur zuweisen. z.B.:
Delphi-Quellcode:
Dies ist leider nicht möglich.
procedure DoMessage(MsgID: Integer);
... var Obj: OleVariant: begin Obj := CreateOleObject('meinObjekt'); Obj.OnMessage := doMessage; end; Unter D5 E kommt immer die Meldung "nicht genügend wirkliche Parameter". Danke Garby |
Re: Ereignisprozedur an ActiveX Objekt übergeben
Probiers mal mit :
Code:
Aber vermutlich muß dein übergebene Procedure eh noch eine Methode einer Klasse sein.
Obj.OnMessage := @doMessage;
Wie sieht die Definition der Ereignisprozedur aus? Und wieso importierst Du nicht die Typbibliothek und verwendest die frühe Bindung? |
Re: Ereignisprozedur an ActiveX Objekt übergeben
Das habe ich schon probiert.
Hier kommt die Meldung "Variable erforderlich". Ich verwende die späte Bindung zum Einen, weil das Programm u.U. auf Systemen ohne diesem ActiveX Server laufen muss, und zum Anderen, weil sich verschiedene Versionen (die auch verschieden implementiert sind) des Servers auf dem System befinden können. Hast du vielleicht noch eine andere Idee? Danke Garby |
Re: Ereignisprozedur an ActiveX Objekt übergeben
Zitat:
Du müsstest einen Event Sink bereitstellen. Dies ist ein komplexes Thema; schau mal auf: ![]() |
Re: Ereignisprozedur an ActiveX Objekt übergeben
Zitat:
Zu 2: Haben diese verschiedenen Versionen die gleiche Schnittstelle? Falls ja, so spricht nichts gegen frühe Bindung. Falls schon, so würde ich mittels Bridge-Pattern diese eigenheiten Kapseln und trotzdem mit früher Bindung arbeiten. Zitat:
Aber bei Importierung der Typbibliothek wird das alles bei neueren Delphi-Versionen i.d.R. utomatisch erledigt (ohne EventsinkImp) |
Re: Ereignisprozedur an ActiveX Objekt übergeben
Danke für eure Antworten.
Ich werde jetzt doch frühe Bindung verwenden, weil mir das mit den EventSinks zu stressig ist. Garby |
Re: Ereignisprozedur an ActiveX Objekt übergeben
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz