Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   .net-Formular in Delphi-Formular einbetten (https://www.delphipraxis.net/152844-net-formular-delphi-formular-einbetten.html)

r_kerber 9. Jul 2010 09:31

Delphi-Version: 2005

.net-Formular in Delphi-Formular einbetten
 
Nachdem ich hier gefragt habe, wie ich Events einer .net-Klasse in einem Delphi-Programm behandeln kann, nun die nächste Frage. Die beschriebene Klasse ist ein .net-Formular. So wie es in dem zutierten Thread beschrieben ist, wird das Formular als neues Fenster angezeigt. Wie erreiche ich es, dieses Formular innerhalb eines Delphi-Formulars anzuzeigen?

mkinzler 9. Jul 2010 09:33

AW: .net-Formular in Delphi-Formular einbetten
 
Versuch mal Handle der Delphiform als Parent setzen

r_kerber 9. Jul 2010 09:39

AW: .net-Formular in Delphi-Formular einbetten
 
Stellt sich nur die Frage, wo ich das Parent hier setzen soll
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  CoffeeBar: ICoffeeBarController;
  Result: Integer;
begin
  CoffeeBar := CreateComObject(CLASS_CoffeeBarController) as ICoffeeBarController;
  CoffeeBar.AddBean('A');
  CoffeeBar.AddBean('B');
  CoffeeBar.AddBean('C');
  CoffeeBar.OpenCoffeeBar;
end;
CoffeeBar hat keine Eigenschaft Parent...

mkinzler 9. Jul 2010 09:45

AW: .net-Formular in Delphi-Formular einbetten
 
Es sollte aber die .setParent() Methode verfügbar sein

r_kerber 9. Jul 2010 09:53

AW: .net-Formular in Delphi-Formular einbetten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nicht wirklich. siehe Anhang

mkinzler 9. Jul 2010 09:58

AW: .net-Formular in Delphi-Formular einbetten
 
Oh ist eine Funktion
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

r_kerber 9. Jul 2010 10:09

AW: .net-Formular in Delphi-Formular einbetten
 
Problem ist nur, dass ich das Handle für CoffeeBar nicht kenne...

mkinzler 9. Jul 2010 10:33

AW: .net-Formular in Delphi-Formular einbetten
 
Hast du Zugriff auf den c# Source?
Sonst könntest du versuchen ihn per FindWindow() zu ermitteln

r_kerber 9. Jul 2010 11:21

AW: .net-Formular in Delphi-Formular einbetten
 
Zitat:

Zitat von mkinzler (Beitrag 1034463)
Hast du Zugriff auf den c# Source?

Im Prinzip ja.

Phoenix 9. Jul 2010 14:46

AW: .net-Formular in Delphi-Formular einbetten
 
Am einfachsten geht sowas mit Hydra.
Das kann genau solche Sachen ziemlich einfach erledigen. Kostet aber auch was. Kommt halt drauf an wie teuer es ist, das ganze Managed/Unmanaged interop selber hinzufrickeln und ob es günstiger wäre, einfach hier und dort seine Forms zusammenzuklatschen und mit Hydra gegenseitig einzublenden.

r_kerber 9. Jul 2010 15:04

AW: .net-Formular in Delphi-Formular einbetten
 
Tja, was soll ich dazu sagen. Wir haben Auftrag erhalten, es zunächst ohne Hydra zu versuchen...

Phoenix 9. Jul 2010 15:22

AW: .net-Formular in Delphi-Formular einbetten
 
Wow.. wegen zwei bis maximal drei Personentagen (durchschnittlicher interner Entwickler-Satz) an Lizenzkosten? Okay.. plus etwas Einarbeitungszeit. Ich würde trotzdem sagen dass die Lizenz inkl. Einarbeitungszeit billiger ist als eine Person da vier Tage dranzusetzen, wenn hinterher nicht was rauskommt das universell wiederverwendbar ist. ;-) Zumal da ja noch Support für ein Jahr drin ist.

Aber das müsst ihr freilich für Euch selber kalkulieren.

r_kerber 12. Jul 2010 10:11

AW: .net-Formular in Delphi-Formular einbetten
 
Da die Lizenz mit 499 USD pro Entwickler doch etwas hoch ist (immerhin haben wir hier über 30 Delphi-Lizenzen...) versuchen wir doch erst mal selbst eine Lösung zu finden. Ich bin für weitere Vorschläge/Hinweise/Tipps dankbar.

Bernhard Geyer 12. Jul 2010 10:57

AW: .net-Formular in Delphi-Formular einbetten
 
Zitat:

Zitat von r_kerber (Beitrag 1034912)
Da die Lizenz mit 499 USD pro Entwickler doch etwas hoch ist (immerhin haben wir hier über 30 Delphi-Lizenzen...)

Ich kenn jetzt Hydra nicht, aber es müsste doch möglich sein mit 1-2 Lizenzen auszukommen `(für die Entwickler die die Integration durchführen) und die anderen Enwickler verwenden dann nur das Ergebnis der Integration.

r_kerber 12. Jul 2010 11:12

AW: .net-Formular in Delphi-Formular einbetten
 
kann ich mir schlecht vorstellen. Jeder Entwickler muss in der Lage sein eine voll funktionsfähige exe-Datei zu erstellen, die sowohl Win32- als auch .net-Formulare enthält. Und das für eine recht lange Übergangszeit. BTW: Und jeder Entwickler muss im Prinzip auch beide Arten von Formularen berarbeiten können, d.h. muss also Delphi als auch VS auf seinem Rechner haben.

Phoenix 13. Jul 2010 08:30

AW: .net-Formular in Delphi-Formular einbetten
 
Zitat:

Zitat von r_kerber (Beitrag 1034912)
Da die Lizenz mit 499 USD pro Entwickler doch etwas hoch ist (immerhin haben wir hier über 30 Delphi-Lizenzen...) versuchen wir doch erst mal selbst eine Lösung zu finden. Ich bin für weitere Vorschläge/Hinweise/Tipps dankbar.

Zugegeben: Selbst mit Mengenrabatt (30 % bei der Menge) ist man bei 30 Lizenzen immer noch bei knapp unter 8500€. Das bedeutet natürlich, dass ihr irgendwo zwischen einem und zwei Personenmonaten habt, um die Infrastruktur selber so flexibel hinzubekommen bevor sich die Lizenzen lohnen.

hanspeter 13. Jul 2010 10:03

AW: .net-Formular in Delphi-Formular einbetten
 
Ich habe mit Hydra einiges probiert und war nicht so ganz glücklich.
Die Masse der Probleme entsteht mit den notwendigen Laufzeit-BPL.
Desweiteren sollte man bedenken, das die Hydra - Lizenz wohl eine Jahreslizenz ist.
Spätestens mit der nächsten Delphi-Version fallen wieder Kosten an.
Zwischenzeitlich habe ich mir ein kleines Plugin-System gebaut, welches auf Basis von Exe-Dateien arbeitet.
Da die Programme grundsätzlich auf dem gleichen Rechner und im gleichen Verzeichnis laufen macht die UAC keine Probleme.
Parameter werden über die Aufrufzeile übergeben. So z.B. auch das Window-Handle des Hauptfensters.
Verwende ich dieses als Parent, ist das gestartete Programm praktisch eingebettet.
Das gestartete Programm wird überwacht, sodass ich auf der Aufrufseite einen modalen Aufruf realisieren kann.
Bei Programmende werden alle vom Hauptprogramm gestarteten Satelittenprogramme beendet.
Die Vorgehensweise hat ein paar Vorteile.
Einmal die völlige Unabhängigkeit von Delphi-Version und Laufzeit-BPL.
Der Anwender findet es gut, einzelne Module auch separat starten zu können.
Die externen Module lassen sich mit einer Com-Schnittstelle (outofprocess) ergänzen.

Gruß
Peter


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