![]() |
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 ![]() |
Re: Tabs mit eigenen Prozessen?
Schau mal
![]() |
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: |
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.).
|
Re: Tabs mit eigenen Prozessen?
Ist das nicht über ein klassisches MDI zu lösen?
|
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. |
Re: Tabs mit eigenen Prozessen?
gibt´s hier nochmal...
![]() |
Re: Tabs mit eigenen Prozessen?
Zitat:
|
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.
|
Re: Tabs mit eigenen Prozessen?
Könnte man die anderen Anwendungen nicht per SetParentWindow() z.B. auf ein Panel im eigenen Programm legen?
|
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... |
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. |
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. |
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 04:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz