Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formular aus DLL als Hauptformular? (https://www.delphipraxis.net/129388-formular-aus-dll-als-hauptformular.html)

Mattze 18. Feb 2009 09:08


Formular aus DLL als Hauptformular?
 
Hi,

gibt's bestimmt schon, aber ich habe es nicht gefunden...

Ich habe mir für ein Programm eine DLL geschrieben in der ein Formular steckt.
(Eigentlich mehrere Formulare, aber das ist hier unerheblich.)
Geht auch alles sehr gut.

Inzwischen würde ich gerne dieses Formular auch als Hauptformular eines eigenständigen Programms nutzen. ("Outsourcing" - you know? ;-))

Ich habe nur noch keine zündende Idee, wie das gehen soll. Muss ja dann irgendwie in der Application stehen. Aber wie?
kennt sich da jemand aus?

Gruß
Mattze

sirius 18. Feb 2009 09:25

Re: Formular aus DLL als Hauptformular?
 
Du hast ja mindestens den Application-Zeiger umgebogen. Dann kannst du doch jetzt auch Application.Mainform setzen, oder?

Edit: Ach nee, ist ja readonly-prop

Edit2: Wie erstellst denn du die Formulare?

nuclearping 18. Feb 2009 09:31

Re: Formular aus DLL als Hauptformular?
 
Afaik geht das nicht so einfach, wie du dir das denkst.

http://delphi.about.com/od/objectpas...bpl_vs_dll.htm

hanspeter 18. Feb 2009 11:07

Re: Formular aus DLL als Hauptformular?
 
Zitat:

Zitat von nuclearping
Afaik geht das nicht so einfach, wie du dir das denkst.

http://delphi.about.com/od/objectpas...bpl_vs_dll.htm


Mit dem Umweg über ein Interface sollte es gehen.
Notfalls kann man im Hauptprogramm ein Dummy als Hauptfenster verwenden und dieses als
Parent für das Fenster in der Dll zuweisen.
Und hört auf auf BPL via Dll rumzuhacken.
BPL ist ein großer Designfehler in Delphi. Eine Dll kann ich Versionsunabhängig und plattformübergreifend verwenden.
Eine BPL ist versionsabhängig, muß gegen die gleiche Compilerversion compiliert werden und die dadurch entstehende BPL Hölle ist kaum beherrschbar.
Das Problem BPL wäre wesentlich entschärfter, wenn die VCL Interfaces verwenden würde.

Gruß
Peter

nuclearping 18. Feb 2009 13:00

Re: Formular aus DLL als Hauptformular?
 
Afaik gibt es aber keine andere etablierte Möglichkeit, in Delphi Forms in "DLLs" auszulagern.

sirius 18. Feb 2009 13:01

Re: Formular aus DLL als Hauptformular?
 
Eine etablierte Möglichkeit sind ActiveX-Forms.

hanspeter 18. Feb 2009 13:45

Re: Formular aus DLL als Hauptformular?
 
Zitat:

Zitat von sirius
Eine etablierte Möglichkeit sind ActiveX-Forms.

Die wiederum arbeiten mit Interfaces.

Wir haben das in einem großen Projekt realisiert. Alle Forms in Dll(16 Stück).
Diese werden über Interfaces auf Tabpages in der Mainform gelinkt.
Das Verfahren ist gedacht, um beim Programmstart nur freigeschaltete (=gekaufte) Programm-Module zu laden.
An Laufzeit-BPL kommt man bei diesem Verfahren, aufgrund des RegisterClass Problems von Delphi, jedoch nicht vorbei.

Will man auf BPL komplett verzichten, was aufgrund der Versionsproblematik auch Sinn macht, dann ist Comserver, ActiveX
oder die Modularisierung über Exe-Files ein gangbarer Weg.
Gerade letztere Version mit Exe-Files habe ich in einem Projekt eingesetzt und noch keinen negativen Feeback bekommen.
Das BPL Versionsproblem ist bei uns insofern bedeutungslos, da Konzernweit nur Delphi 7 eingesetzt werden darf.

Ein weiterer gangbarer Weg ist die Verwendung des Hydra Frameworks von Remobjects. Hier bietet sich noch der Vorteil
Net und Delphi native zu kombinieren.
Arbeitet auch mit Interfaces und benötgt Laufzeitbibliotheken aufgrund des RegisterClass Effektes.


gruß
Peter


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