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 Tabs mit eigenen Prozessen? (https://www.delphipraxis.net/149631-tabs-mit-eigenen-prozessen.html)

CarstenB 25. Mär 2010 15:38


Tabs mit eigenen Prozessen?
 
Hallo zusammen,

Ich stehe momentan vor einem Problem... :wall:

Ich möchte die Möglichkeit schaffen in meinem Programm komfortabel mit mehreren Projekten gleichzeitig zu arbeiten.
Die bisherige Variante einfach mehrere Instanzen zu starten und dann ständig zu switchen ist einfach nicht mehr zeitgemäss.

Mir schwebt nur vor mehrere Prozesse (nicht Threads) zu erzeugen, zwischen denen man über Tabs hin- und herschalten kann.
Wie ich es verstanden habe verfolgt Google's Chrome wohl eine ähnliche Taktik.

Leider habe ich bisher keine Idee wie ich an dieses Problem herangehen könnte, ich wäre also dankbar für jede Art von Hinweis, ob und wenn ja wie sich sowas mit Delphi realisieren lassen könnte.

Gruß
Carsten

Crosspost im DF

s.h.a.r.k 25. Mär 2010 15:43

Re: Tabs mit eigenen Prozessen?
 
Schau mal hier.

stho 25. Mär 2010 15:45

Re: Tabs mit eigenen Prozessen?
 
Also ich habe leider keine kontrete Lösung für das Problem...
Du möchtest also mehrere kleine Programme (Beispiel: 1 x Taschenrechner mit seperater .exe, 1 x Wecker mit seperater .exe, ...)
in einer eigenen anwendung in den Tabs dieser anwendung laufen lassen?
(hoffe das hab ich richtig verstanden)

Mir fällt nur ein das du eventuell eine kleine virtuelle maschine programmieren musst in der diese Prozesse gesondert vom haupt-system laufen...
(Aber ob und wie das geht weiß ich leider auch nicht... da müssen wir auf die antworten der profis warten...)

sehr spezielle frage... :gruebel:

SirThornberry 25. Mär 2010 15:51

Re: Tabs mit eigenen Prozessen?
 
Ich weiß nicht wie andere das machen. Ich würde eine Hauptanwendung basteln welche die Tabverwaltung etc. bereit stellt. Wenn jetzt irgend eines deiner anderen Programme gestartet wird schaut es nach ob diese Hauptanwendung bereits läuft. Wenn die Hauptanwendung noch nicht läuft wird diese durch dein Unterprogramm gestartet. Anschließend sendest du eine Message an die Hauptanwendung und übergibst die notwendigen Informationen (zum Beispiel Handle des Fensters welches ins Tab gesetzt werden soll, Caption etc.).

Sir Rufo 25. Mär 2010 16:59

Re: Tabs mit eigenen Prozessen?
 
Ist das nicht über ein klassisches MDI zu lösen?

CarstenB 25. Mär 2010 18:23

Re: Tabs mit eigenen Prozessen?
 
MDI hab ich schon. :)

Von Bedeutung ist ein TreeView über das die verschiedenen Projektbestandteile erreicht werden. Zugehörige Fenster werden dann innerhalb des MDIs geöffnet. Diese beiden Komponenten müssten praktisch in Tabs verfrachtet werden. Die grundlegende Menüsteuerung sollte ausserhalb bleiben und das jeweils aktive Tab steuern.

Prozesse wären mir insofern lieber, dass ein Teil der zum Projekt gehörigen Daten, sowie diverse Verifizierungsmechanismen nur in DLLs vorhanden sind. (Der Delphi-Part ist praktisch nur die GUI.) Starte ich das ganze jeweils als eigenen Prozess hängt die DLL auch jeweils an einem dran und ich muss mir zumindest um diese Baustelle keine Gedanken mehr machen. :roll:

Mit etwas "Untertreibung" und einer gehörigen Portion Optimismus müsste ich so nur die entsprechenden Prozesse erzeugen, einbinden und mich in die Eventqueue des jeweils aktiven Prozesses reinhängen um die Menü-Steuerung zu realisieren.

haentschman 25. Mär 2010 18:33

Re: Tabs mit eigenen Prozessen?
 
gibt´s hier nochmal... Crosspost im DF

CarstenB 25. Mär 2010 18:46

Re: Tabs mit eigenen Prozessen?
 
Zitat:

Zitat von haentschman
gibt´s hier nochmal... Crosspost im DF

Hab den Link im Startpost ergänzt. Oder darf man das nicht?! :gruebel:

SirThornberry 26. Mär 2010 07:19

Re: Tabs mit eigenen Prozessen?
 
Wenn ich nach dem Datum des letzten editierens gehe hast du es im Startpost ergänzt nachdem haentschman seinen Beitrag geschrieben hat. Ansonsten ist es natürlich gestattet (und auch erwünscht) dies im Startpost zu ergänzen.

jfheins 26. Mär 2010 07:23

Re: Tabs mit eigenen Prozessen?
 
Könnte man die anderen Anwendungen nicht per SetParentWindow() z.B. auf ein Panel im eigenen Programm legen?

CarstenB 26. Mär 2010 12:47

Re: Tabs mit eigenen Prozessen?
 
Kleines Update:

Ich habe mich gestern mal noch drangesetzt und ein Testprojekt erzeugt, das mehrere Instanzen eines einfachen Testprogramms erzeugt und diese in die TabSheets einer PageControl einsetzt. Soweit kein Problem.

Etwas anders sieht es dann bei der Menü-Steuerung aus. Es ist wohl so, dass es da keine geeignete Schnittstelle gibt in die man sich reinhängen könnte. Ich würde da um einen umfangreichen Nachrichtenmechanismus wohl nicht herumkommen...

Sir Rufo 26. Mär 2010 13:01

Re: Tabs mit eigenen Prozessen?
 
Ist es denn zwingend notwendig wirklich komplett eigene Prozesse laufen zu lassen?
Also pro Projekt die Anwendung zu starten?

Es wäre doch wesentlich einfacher jedes Projekt komplett in einer Klasse zu verwalten.
Pro Projekt gibt es dann eine Instanz der Projekt-Klasse und die werden dann von einer Anwendung verwaltet.

Den Nachrichtenteil kannst du somit komplett knicken.

CarstenB 26. Mär 2010 13:19

Re: Tabs mit eigenen Prozessen?
 
Geht leider auch nicht so einfach, wegen der DLL-Problematik (s.o. #6)

Der Vorschlag kam im DF auch schon. Ich kopier mal was. ;)

Die DLL stammt noch aus dem Präkambrium. :P Da hat an solche Luxus-Features wie das gleichzeitige Bearbeiten mehrerer Projekte noch keiner gedacht. :zwinker:

Es handelt sich dabei um eine alte "C"-DLL mit einigen wenigen "C++"-Einschüssen für Dinge die ich überarbeitet/ergänzt habe.
In einer Instanz mehrere Projekte verwalten zu wollen wäre in etwa gleichbedeutend damit das ganze Ding wegzuschmeissen und neu zu machen. Die Möglichkeit auf der Ebene mit vertretbarem Aufwand was zu machen habe ich schon geprüft und wenn es eine Alternative wäre würde ich das auch bevorzugen.
Durch mehrere Prozesse würde ich "einfach" n Instanzen der DLL erzeugen, die den für's jeweilige Projekt erforderlichen Speicher, etc. unabhängig verwalten würden. Unter'm Strich also das Gleiche wie jetzt, wo die Software mehrfach gestartet wird.

CarstenB 30. Mär 2010 09:05

Re: Tabs mit eigenen Prozessen?
 
Status Quo:

Ich habe mich entschieden einen deutlich einfacheren Weg zu gehen.

Beim Start der ersten Instanz wird ein Verwaltungsprozess (mangels Fork unter Windows) erzeugt, an dem sich alle weiteren Prozesse anmelden und der die Instanzen dann verwaltet. Die verfügbaren Tabs werden einfach in allen Instanzen angezeigt und vom "Verwalter" lediglich die Sichtbarkeit derselben geändert.

Das macht umfangreiche Umbauten praktisch überlüssig. Die Kommunikation mit dem Verwaltungsteil ist absolut trivial, beschränkt sich auf gerade mal eine handvoll Nachrichten.

Trotzdem danke für die Tips.

Gruß
Carsten


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