Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism .net, com, ActiveX mit BDS 2006 (https://www.delphipraxis.net/101258-net-com-activex-mit-bds-2006-a.html)

Bubblegum 10. Okt 2007 15:00


.net, com, ActiveX mit BDS 2006
 
Ich muss eine .net Anwendung in Delphi 2006 (WinForms) entwickeln. Diese Anwendung soll dann aber als com oder ActiveX in eine andere Anwendung eingebunden werden. Diese kann sowohl -net als auch win32 sein.
Geht das überhaupt?
Wenn ja wie? Wie mache ich aus meiner .net Winforms Anwendung ein ActiveX oder Com Objekt?

Phoenix 10. Okt 2007 15:03

Re: .net, com, ActiveX mit BDS 2006
 
Aua. Pfoten Weg!
Delphi.NET und Windows Forms ist ein absolutes No-Go, zumal CodeGear mit dem RAD Studio 2007 sämtliche Windows-Forms Unterstützung komplett entfernt hat.

Schreibe das ganze in C# im Visual Studio oder schreibe lieber gleich ein ActiveX-Object in nativem Delphi.

Bubblegum 10. Okt 2007 15:16

Re: .net, com, ActiveX mit BDS 2006
 
Zitat:

Zitat von Phoenix
Aua. Pfoten Weg!
Delphi.NET und Windows Forms ist ein absolutes No-Go, zumal CodeGear mit dem RAD Studio 2007 sämtliche Windows-Forms Unterstützung komplett entfernt hat.

Schreibe das ganze in C# im Visual Studio oder schreibe lieber gleich ein ActiveX-Object in nativem Delphi.

Das sehe ich genauso, aber ich bin nur die Exekutive. Das ist beschlossene Sache.

Mir geht es darum, wie ich aus einer bestehenden Winforms Dehlpi .net Anwendung(nur eine Forms) ein .net ActiveX Objekt machen kann. Und ob das überhaupt geht, und wenn ja wie?

Phoenix 10. Okt 2007 15:20

Re: .net, com, ActiveX mit BDS 2006
 
Ja, es geht. Siehe diesen CodeProject Artikel.
Der Artikel ist zwar für VB.NET, aber analog geht das mit jeder .NET Sprache.

Ggf. macht es auch Sinn, das Delphi.NET Assembly in VB.NET zu konsumieren und hier mit der angesprochen ComClass die Veröffentlichung zu wrappen. Könnte etliches an Aufwand sparen.

Elvis 10. Okt 2007 15:53

Re: .net, com, ActiveX mit BDS 2006
 
Zitat:

Zitat von Phoenix
Ja, es geht. Siehe diesen CodeProject Artikel.
Der Artikel ist zwar für VB.NET, aber analog geht das mit jeder .NET Sprache.

Msn sollte 2 Dinge beachten:
  • .Net kann kein ActiveX, es kann aber COM
  • Der OP braucht wohl nur eine COM Lib
Es sollte für dich reichen ein Package in D.Net zu bauen und die benötigten Klassen als ComVisible(true) zu markieren.
Für dieses Package kannst du mit regasm eine TypeLib erzeugen (.tlb) und diese kannst du dann in Delphi importieren.
Du kannst jetzt noch weiter gehen und in Delphi ein Pseudocontrol bauen, was die Klassen verpackt und sich selbst als Parent setzt. Dieses Control kannst du dann benutzen um das .Net-Form fortan wie ein Delphi-Control benutzen zu können.
Viel einfacher wäre es sich mal Hydra anzuschauen. Damit kannst du in D.Net ein VisualPlugIn anlegen, was dein Form verpackt, und auf der Delphiseite kannst du das dann direkt als Control benutzen. ;-)

Bubblegum 11. Okt 2007 10:55

Re: .net, com, ActiveX mit BDS 2006
 
Soweit habe ich das so verstanden:

Zuerst erstelle ich mit D.net ein Assembly (Package).
Dieses kann ich ja dann auch in Visual Studio für .net verwenden. Soweit klar!

Leider muss dieses Assembly aber auch in einem alten Visual Studio (nicht .net) eingesetzt werden. Also erstelle ich "regasm" ein Typelib. Wie geht's dann weiter, und habe ich dann aber auch alle Eigenschaften und Ereignisse zur Verfügung, oder nur einen com - Objekt Rumpf, wenn ich das Ganze in einem alten Visual Studio (nicht .net) einsetze?

Elvis 12. Okt 2007 16:32

Re: .net, com, ActiveX mit BDS 2006
 
Zitat:

Zitat von Bubblegum
Leider muss dieses Assembly aber auch in einem alten Visual Studio (nicht .net) eingesetzt werden. Also erstelle ich "regasm" ein Typelib...

Vergiss es, wird niemals gehen!
Eines der Dinge, die MSFT bei .Net komplett und grauenhaft verschlampt hat, ist die Tatsache, dass du nur eine Runtime pro Prozess haben kannst.
Die einzige Chance für eine 1.1 Applikation, eine 2.0 Assembly zu laden wäre, sie Assembly dynamisch zu laden und in der app.config "v2.0.50727" als requiredRuntime einzutragen.
Dadurch wird der Prozess als 2.0-Prozess gestartet.

Edit: Ups, ich dachte du meinst D2007 -> VS2003.
Bei VS2002/.Net 1.0 kannst du es eigentlich vergessen. Die 1.0 wird sich mit an Sicherheit grenzender Wahrscheinlichkeit daran verschlucken. (1.0 war absolut grauenvoll...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 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