AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ereignisprozedur an ActiveX Objekt übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignisprozedur an ActiveX Objekt übergeben

Ein Thema von Garby · begonnen am 1. Dez 2004 · letzter Beitrag vom 1. Dez 2004
Antwort Antwort
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#1

Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 14:05
Hallo,

wie kann ich einem ActiveX Objekt, das mit CreateOleObject erzeugt wurde, eine Ereignisprozedur zuweisen.

z.B.:
Delphi-Quellcode:
procedure DoMessage(MsgID: Integer);
...
var Obj: OleVariant:
begin
  Obj := CreateOleObject('meinObjekt');
  Obj.OnMessage := doMessage;
end;
Dies ist leider nicht möglich.
Unter D5 E kommt immer die Meldung "nicht genügend wirkliche Parameter".

Danke
Garby
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 14:15
Probiers mal mit :

Code:
Obj.OnMessage := @doMessage;
Aber vermutlich muß dein übergebene Procedure eh noch eine Methode einer Klasse sein.
Wie sieht die Definition der Ereignisprozedur aus? Und wieso importierst Du nicht die Typbibliothek und verwendest die frühe Bindung?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 14:45
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
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 14:58
Zitat von Garby:
wie kann ich einem ActiveX Objekt, das mit CreateOleObject erzeugt wurde, eine Ereignisprozedur zuweisen.

z.B.:
Delphi-Quellcode:
procedure DoMessage(MsgID: Integer);
...
var Obj: OleVariant:
begin
  Obj := CreateOleObject('meinObjekt');
  Obj.OnMessage := doMessage;
end;
Dies ist leider nicht möglich.
Event unter COM/DCOM/ActiveX und Delphi sind 2 völlig verschiedene Paar Stiefel!!
Du müsstest einen Event Sink bereitstellen.
Dies ist ein komplexes Thema; schau mal auf:
http://www.techvanguards.com/products/eventsinkimp/
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 15:34
Zitat von Garby:
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.
Zu 1: Das geht auch mit früher Bindung. Erst beim erzeugen des Objekts kracht es.

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 von shmia:
Du müsstest einen Event Sink bereitstellen.
Stimmt - Vergessen.
Aber bei Importierung der Typbibliothek wird das alles bei neueren Delphi-Versionen i.d.R. utomatisch erledigt (ohne EventsinkImp)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 15:41
Danke für eure Antworten.

Ich werde jetzt doch frühe Bindung verwenden, weil mir das mit den EventSinks zu stressig ist.

Garby
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Ereignisprozedur an ActiveX Objekt übergeben

  Alt 1. Dez 2004, 16:01
Zitat von Garby:
Danke für eure Antworten.
Ich werde jetzt doch frühe Bindung verwenden, weil mir das mit den EventSinks zu stressig ist.
EventSinks erfordern eh auf der Clientseite den Import der Typbibliothek, da ja der Client (deine Anwendung) das Sink-Interface implementieren muss. Der Delphi-Importer bastelt daraus eine "normal" Aussehendes und verwendbares Control mit Events.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz