Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi fremde Anwendung als eigenes Formular anzeigen (https://www.delphipraxis.net/64761-fremde-anwendung-als-eigenes-formular-anzeigen.html)

MStoll 7. Mär 2006 23:01


fremde Anwendung als eigenes Formular anzeigen
 
Hallo

ich meine sowas schonmal irgendwo beschrieben gesehen zu haben und habe auch länger gesucht, aber leider nichts mehr gefunden.
Ich habe eine Software-Suite aus verschiedenen Anwendungen. Nun möchte ich eine sog. "Host"-Anwendung machen, innerhalb derer alle Programme gestartet werden können, einfach um die Übersicht zu behalten und nicht so viele Anwendungen in der Taskleiste zu haben, am besten so, dass alle minimiert/angezeigt werden, wenn die "Host"-Anwendung minimiert/angezeigt werden. Gut wäre auch, wenn diese Anwendungen sich ähnlich wie MDI-Childs verhalten oder vll als TabSheets in ein PageControl eingebettet werden könnten.

Für eure Hilfe schonmal vielen Dank.

Gruß
Michael

chaosben 8. Mär 2006 05:43

Re: fremde Anwendung als eigenes Formular anzeigen
 
Hi ho!

Ich habe eben diese deine Vorstellungen letztens im Versandprogramm hier auf Arbeit wie folgt umgesetzt: Jedes Modul liegt als DLL vor und besitzt ein standardisiertes Interface. Die Hauptanwendung sucht in einem Verzeichnis alle DLL's und versucht sie als Modul zu laden. Wenn das gelingt, kommt ein Eintrag in Treeview. Wenn der Nutzer einen Eintrag aus dem Treeview wählt, signalisiert das Hauptprogramm dem Modul, das es sein Hauptformular erstellen soll, erzeugt ein neues TabSheet und setzt das Modul-Fenster als Child ins neue Tabsheet.

Vielleicht hift dir das weiter. Diese Methode setzt natürlich voraus, das du deine Programme in DLL's konvertierst. Alternativ könntest du auch deine Exen starten, die dir dann sagen, welche Fenster-Handles sie haben und dann lässt du dein Hauptprogramm die Fenster "fangen" und machst sie zu "deinen Kindern". :)

MStoll 8. Mär 2006 11:06

Re: fremde Anwendung als eigenes Formular anzeigen
 
Hallo chaosben,

die Idee mit den Dlls finde ich sehr elegant. Wär jedoch froh, wenn noch jemand einen Ansatz mit eigenständigen Programmen hätte, da diese auch einzeln lauffähig sein sollen, ohne dass ich zu jeder "Programm"-DLL noch ne exe machen muss, die diese dann ausführt. Außerdem hab ich bei DLLs die Erfahrung gemacht, dass Formulare, die darin enthalten sind und ausgeführt werden, ihren eigenen Eintrag in der Taskleiste erhalten. Müsste ich da die Parent-property auf das eigentliche Hauptformular der "Host"-Anwendung legen?

Gruß
Michael

chaosben 9. Mär 2006 05:14

Re: fremde Anwendung als eigenes Formular anzeigen
 
Hi ho!

Zitat:

Zitat von MStoll
Außerdem hab ich bei DLLs die Erfahrung gemacht, dass Formulare, die darin enthalten sind und ausgeführt werden, ihren eigenen Eintrag in der Taskleiste erhalten. Müsste ich da die Parent-property auf das eigentliche Hauptformular der "Host"-Anwendung legen?

Schon ganz nah dran. Ich glaube der entscheidende Punkt ist das Create des Formulars. Ich bewerkstellige das mit
Delphi-Quellcode:
CreateParented(Tabsheet.Handle)
Damit sollte es keine Probleme mit der Taskbar geben.
Aber: Es gibt bei der DLL-in-Parent-Lösung ein Problem mit den Tasten. Z.b. werden CommandKeys schon von der Hauptanwendung "gefressen" (auch ohne Keypreview) so dass man sie von dort per Hand weiterleiten muss. Das ist technisch möglich, man darf es nur nicht vergessen.


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