ActiveX mit Oberfläche

21/11/2007 - 17:08 von André Pönisch | Report spam
Hallo NG,

ich hab hier ein Problem mit dem ich nicht mehr so recht weiterkomme.

Die Aufgabe besteht darin, eine Oberflàche, die mit C# programmiert wurde,
so zur Verfügung zu stellen, das es mit Delphi 7 in ein unmanaged Programm
eingebaut werden kann.

Die Idee war nun ein ActiveX-Control zu erstellen.
Ich weiß, offiziell werden .NET-Oberflàchen in ActiveX nicht unterstützt,
aber vielleicht gibts ja doch einen Weg das zu realisieren.
Jedenfalls war ein Beispiel-Control nach
http://www.codeproject.com/cs/miscc...ntrols.asp fix
implementiert und funktioniert innerhalb von TstCon32 prima.

Obwohl es laut Literatur gehen müsste, erkennt Delphi nun anscheinend doch
keine .NET-ActiveX-Controls oder zumindest keine, die auf UserControl
basieren. Jedenfalls fehlt mein Control dort in der Liste der möglichen
ActiveX-Controls (regasm wurde durchgeführt und in TstCon32 funktioniert es
nach wie vor).

Eine Idee war noch ein ActiveX-Control mit C++ zu schreiben, dass das
C#-UserControl enthàlt. Davon abgesehen das ich nicht wirklich Ahnung von
MFC hab, sieht es zumindest laut Compiler so aus, als ob Managed-Controls
im Unmanaged-Ole-Control nicht möglich ist (in etwa: "verwaltetes Control
kann nicht in einem nicht verwaltetetem Control deklariert werden").

Was bleiben noch für Möglichkeiten?
Oder war ich schon auf einem richtigen Weg?

Ich bin für jeden Tipp dankbar.

Grüße
André
 

Lesen sie die antworten

#1 André Pönisch
22/11/2007 - 12:37 | Warnen spam
Hallo NG,

neuer Tag, neues Glück: wir sind ein Stück weitergekommen.

Der springende Punkt ist bei Delphi nur, dass man es als Typ-Bibliothek
hinzufügt, nicht als Komponente. Dann taucht die Control im Angebot auf und
kann importiert werden. Sie wird dann auch korrekt angezeigt und reagiert
z.B. auf Button-Klicks.

Jetzt hapert es noch an der Kommunikation zwischen dem Delphi-Programm und
dem Control.
Der Versuch eine Methode mit String-Parameter aufzurufen endete immer
darin, dass im ActiveX-Control nur null ankam. Der Parameter-Typ wird in
Delphi als WideString angezeigt und wir haben auch darauf konvertiert. Ohne
Erfolg.

Das zweite Problem sind Events. Wie implementiere ich in C# für ein ActiveX
ein Event? Normaler Eventhandler reicht wohl nicht, oder? Jedenfalls konnte
Delphi damit nicht viel anfangen.
Leider findet sich dazu auch kaum etwas im Netz. Hat vielleicht jemand
einen Link-Tipp?

Generell wàre ich nach wie vor für jeden Tipp zu dem Thema sehr dankbar.

Grüße
André

Ähnliche fragen