größte freie Desktop-Fläche für neue Fenster
Moderator: Moderatoren
größte freie Desktop-Fläche für neue Fenster
eine Denksportaufgabe?
Hallo
ich hänge an einem Problem...
Vorwort:
mit meinem Programm können beliebig viele zusammenhängene Fenster geöffnet werden.
Vor längerer Zeit habe ich Funktionen erstellt welche für jedes neue Fenster die bestmögliche Position errechnet.
Warum auch immer funktioniert das bei den heutigen 4k-Desktops nicht mehr, auf denen (eigentlich) ausreichend Platz für Programmfenster sein sollte.
ALSO suche/benötige ich eine Rechenroutine, welche für das nächste neu zu öffnende Programmfenster den größtmöglichen freien Platz auf dem Desktop herausfindet.
- der größtmögliche freie Platz bezieht sich ausschließlich auf durch Fenster meiner Programme belegen Fläche.
- Desktop-Fläche welche durch Fenster von Fremdprogrammen belegt sind werden ignoriert.
- Desktop-Flächen welche durch meine Programme belegt sind liegen vor.
Vielleicht eigentlich eine logische Denkaufgabe - ich stehe momentan vor einer Wand
Hallo
ich hänge an einem Problem...
Vorwort:
mit meinem Programm können beliebig viele zusammenhängene Fenster geöffnet werden.
Vor längerer Zeit habe ich Funktionen erstellt welche für jedes neue Fenster die bestmögliche Position errechnet.
Warum auch immer funktioniert das bei den heutigen 4k-Desktops nicht mehr, auf denen (eigentlich) ausreichend Platz für Programmfenster sein sollte.
ALSO suche/benötige ich eine Rechenroutine, welche für das nächste neu zu öffnende Programmfenster den größtmöglichen freien Platz auf dem Desktop herausfindet.
- der größtmögliche freie Platz bezieht sich ausschließlich auf durch Fenster meiner Programme belegen Fläche.
- Desktop-Fläche welche durch Fenster von Fremdprogrammen belegt sind werden ignoriert.
- Desktop-Flächen welche durch meine Programme belegt sind liegen vor.
Vielleicht eigentlich eine logische Denkaufgabe - ich stehe momentan vor einer Wand
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: größte freie Desktop-Fläche für neue Fenster
willst du meine Tetris Lösung haben ... sollte mal eine Demo zur "automatischen" Lösung werden ...
jetzt im Ernst : das zu "berechnen" könnte ziemlich lange dauern wenn du nicht mehr Einschränkungen machen kannst.
ausgehend von einer Position {0,0} und Grösse {x,y} des neuen Fenster müsste man "in Schritten" prüfen ob es ein anderes Fenster "trifft"ein "HitWindow" ist gegeben wenn einer der 4 neuen Ecken in einem anderen Fenster liegt.
wenn nun das neue Fenster grösser ist muss man anders herum prüfen ob das kleine in das grosse passt.
jetzt im Ernst : das zu "berechnen" könnte ziemlich lange dauern wenn du nicht mehr Einschränkungen machen kannst.
ausgehend von einer Position {0,0} und Grösse {x,y} des neuen Fenster müsste man "in Schritten" prüfen ob es ein anderes Fenster "trifft"
Code: Alles auswählen
FOR x := 1 TO aDesk[1]-aNewSize[1] STEP nXstep
FOR y := 1 TO aDesk[2]-aNewSize[2] STEP nYstep
aNewPos := {x,y}
FOR i := 1 TO LEN(aFenster)
aPos[1] := aFenster[i][xPos ]
aPos[2] := aFenster[i][yPos ]
aSize[1] := aFenster[i][xSize]
aSize[2] := aFenster[i][ySize]
IF HitWindow(aNewPos,aNewSize, aPos,aSize)
wenn nun das neue Fenster grösser ist muss man anders herum prüfen ob das kleine in das grosse passt.
gruss by OHR
Jimmy
Jimmy
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: größte freie Desktop-Fläche für neue Fenster
Morgen Roland !
Ich frage deshalb weil ich den Eindruck habe dass man suchen muß; mit einem Fenster-Manager wird beim Öffnen und Schließen der Fenster dies protokolliert und man weiß im Vorfeld wo noch wie viel Platz ist.
Frage: Kann man die Größe der Fenster ändern, ist also ein Sizer vorhanden?
Hast du einen Fenster-Manager im deinem Programm?ALSO suche/benötige ich eine Rechenroutine, welche für das nächste neu zu öffnende Programmfenster den größtmöglichen freien Platz auf dem Desktop herausfindet.
Ich frage deshalb weil ich den Eindruck habe dass man suchen muß; mit einem Fenster-Manager wird beim Öffnen und Schließen der Fenster dies protokolliert und man weiß im Vorfeld wo noch wie viel Platz ist.
Frage: Kann man die Größe der Fenster ändern, ist also ein Sizer vorhanden?
--
Hans-Peter
Hans-Peter
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: größte freie Desktop-Fläche für neue Fenster
Ich denke es ist viel Einfacher vorher den Platz logisch z.B. für 4 oder 6 oder 9 Fenster zu planen und diese Größen zu berechnen.
Dann musst du nur wissen, ob Platz 4 z.B. belegt ist und den nächsten freien suchen ...
Die Position und Größe legt man mit SetPosAndSize() fest ...
Wenn es unabhängige Programme sind wird es komplexer ...
Dann musst du nur wissen, ob Platz 4 z.B. belegt ist und den nächsten freien suchen ...
Die Position und Größe legt man mit SetPosAndSize() fest ...
Wenn es unabhängige Programme sind wird es komplexer ...
Gruß
Hubert
Hubert
Re: größte freie Desktop-Fläche für neue Fenster
- Es geht nur um bestimmte verbundene (gekoppelte) Fenster.
- Die Position und Größe der vorhandenen Fenster kann abgefragt werden bzw. ist zwischengespeichert.
- Die Fenster haben beliebige Größen.
- Meist sind es nur 2 bis 5 Fenster.
- Es gibt Fenster, da wird die Größe und Position automatisch gespeichert und sollen/müssen auch dort wieder angezeigt werden. Diese Fenster werden aber bei der Berechnung der Position neuer Fenster berücksichtigt.
- vorhandene Fenster werden nicht verschoben um das neue Fenster anzuzeigen
(es gibt eine Funktion welche alle Fenster proportional verschiebt).
Dort wird dann das neue Fenster reingesetzt.
Für das nächste Fenster wird dann wieder gesucht.
Wenn einer einen großen Monitor hat ist das erst einmal die schnellste Lösung.
Ist die Desktopfläche zu klein bzw. geht der freie Platz aus kann man auch nichts machen.
Zum einen geht es darum, dass der User mit einem großen Monitor den höchstmöglichen automatischen Komfort hat. Zum anderen soll der User leichter die Möglichkeit haben zwischen den Fenstern mit der Maus hin und herzuspringen ohne das richtige Fenster auf der Taskleiste suchen zu müssen.
Ich hatte einen Fenster Manager, der funktionierrte aber nur richtig so lange alle Fenster die gleiche Größe hatten.
Re: größte freie Desktop-Fläche für neue Fenster
@Jimmy
ob "Tetris" ein passender Ansatz ist weiß ich nicht.
Es geht ja "nur" um rechteckige Fenster und keines wird verschoben.
Das neue Fenster soll ja entweder irgendwo vollständig reinpassen oder mit minimalsten Überschneidungen drübergelegt werden.
ob "Tetris" ein passender Ansatz ist weiß ich nicht.
Es geht ja "nur" um rechteckige Fenster und keines wird verschoben.
Das neue Fenster soll ja entweder irgendwo vollständig reinpassen oder mit minimalsten Überschneidungen drübergelegt werden.
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Roland !
Zwei Fragen:
- Sind das Fenster in einer Applikation/EXE oder 1 Fenster je Applikation/EXE welche du platzieren möchtest.
- Du hast geschrieben "... so lange alle Fenster die gleiche Größe hatten." Das heißt die Fenster haben jetzt eine unterschiedliche Größe. Ist dessen Größe veränderbar bzw. hast du auch einen Font-Sizer?
Ein Weg könnte sein den Monitor nicht in Pixel sondern in etwas größere Bereiche (vermutlich wie bei Jimmys Tetris-Lösung) einzuteilen.
Dann in eine Tabelle/Array je Bereich schreiben ob bzw. wer diesen Bereich belegt.
Das wäre analog einer automatischen Lagerplatz-Findung mit Größenangabe oder einer CAM-Lösung zur optimalen Positionierung von Konturen bei einem Blech-Laser um den Platz auf einer großen Tafel optimal auszunutzen.
Zwei Fragen:
- Sind das Fenster in einer Applikation/EXE oder 1 Fenster je Applikation/EXE welche du platzieren möchtest.
- Du hast geschrieben "... so lange alle Fenster die gleiche Größe hatten." Das heißt die Fenster haben jetzt eine unterschiedliche Größe. Ist dessen Größe veränderbar bzw. hast du auch einen Font-Sizer?
Ein Weg könnte sein den Monitor nicht in Pixel sondern in etwas größere Bereiche (vermutlich wie bei Jimmys Tetris-Lösung) einzuteilen.
Dann in eine Tabelle/Array je Bereich schreiben ob bzw. wer diesen Bereich belegt.
Das wäre analog einer automatischen Lagerplatz-Findung mit Größenangabe oder einer CAM-Lösung zur optimalen Positionierung von Konturen bei einem Blech-Laser um den Platz auf einer großen Tafel optimal auszunutzen.
--
Hans-Peter
Hans-Peter
Re: größte freie Desktop-Fläche für neue Fenster
Beides.
Es sind eigenständige EXE (XbpCrt) die aber "miteinander reden", und es können XbpDialog-Fenster innerhalb einer dieser EXE sein.
Ja - je nach Gusto des jeweiligen Users.
Ja - aber beim Öffnen eines neuen Fensters sind die Start-Werte mir ja bekannt.
Meine bisherige Lösung basiert auf dem Ansatz den Desktop in Bereiche aufzuteilen und dort die neuen Fenster zu platzieren.HaPe hat geschrieben: ↑Sa, 24. Mär 2018 11:25Ein Weg könnte sein den Monitor nicht in Pixel sondern in etwas größere Bereiche (vermutlich wie bei Jimmys Tetris-Lösung) einzuteilen.
Dann in eine Tabelle/Array je Bereich schreiben ob bzw. wer diesen Bereich belegt. Das wäre analog einer automatischen Lagerplatz-Findung.
Ich habe auch Hilfsmittel mit denen mit einem Mausklick die neuen Fenster besser verteilt werden können. Das ist schon ein Klick zu viel für die Anwender...
Re: größte freie Desktop-Fläche für neue Fenster
Zusatz:
Durch die individuell wählbare Schriftgröße der Fenster gibt es User, da passen gerade zwei Fenster auf einen 4k-Desktop (ein Schriftzeichen ca. 1cm hoch).
Ein anderer arbeitet mit mittelgroßer Schrift und kann locker einige Fenster unterbringen.
Der nächste arbeitet mit großem Hauptfenster, nutzt aber mittelgroße und kleine Schrift in den Hilfsfenstern.
Wenn man alle Fenster immer neu anordnen könnte wäre es einfacher - darf aber nicht gemacht werden.
Durch die individuell wählbare Schriftgröße der Fenster gibt es User, da passen gerade zwei Fenster auf einen 4k-Desktop (ein Schriftzeichen ca. 1cm hoch).
Ein anderer arbeitet mit mittelgroßer Schrift und kann locker einige Fenster unterbringen.
Der nächste arbeitet mit großem Hauptfenster, nutzt aber mittelgroße und kleine Schrift in den Hilfsfenstern.
Wenn man alle Fenster immer neu anordnen könnte wäre es einfacher - darf aber nicht gemacht werden.
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Roland !
Ich wage es fast nicht zu fragen, aber wäre es nicht möglich dass sich der Anwender nur einmal einstellen muss wie die vielen Fenster optimal auf den Monitor passen und später diese Fenster wieder benutzerdefiniert genau an dieser Stelle geöffnet werden?
Im Moment kann ich mir nicht vorstellen dass ein Mitarbeiter/in mehr als 4 bis 6 Fenster von immer unterschiedlichen Applikationen/Bereichen im Programm zu öffnen hat sodaß ein hin- und wieder manuelles Anordnen diesen überfordert.
Der Fachbegriff in CAD/CAM heisst Verschachtelung.
Suche mal in Google/Bing/... mit "+verschachtelung +rechteck"
Deine Anwender sind ja ganz schön verwöhntMeine bisherige Lösung basiert auf dem Ansatz den Desktop in Bereiche aufzuteilen und dort die neuen Fenster zu platzieren.
Ich habe auch Hilfsmittel mit denen mit einem Mausklick die neuen Fenster besser verteilt werden können. Das ist schon ein Klick zu viel für die Anwender...
Ich wage es fast nicht zu fragen, aber wäre es nicht möglich dass sich der Anwender nur einmal einstellen muss wie die vielen Fenster optimal auf den Monitor passen und später diese Fenster wieder benutzerdefiniert genau an dieser Stelle geöffnet werden?
Im Moment kann ich mir nicht vorstellen dass ein Mitarbeiter/in mehr als 4 bis 6 Fenster von immer unterschiedlichen Applikationen/Bereichen im Programm zu öffnen hat sodaß ein hin- und wieder manuelles Anordnen diesen überfordert.
Der Fachbegriff in CAD/CAM heisst Verschachtelung.
Suche mal in Google/Bing/... mit "+verschachtelung +rechteck"
--
Hans-Peter
Hans-Peter
Re: größte freie Desktop-Fläche für neue Fenster
Ja
Im Prinzip ja - beißt sich aber mit ...ganz schön verwöhnt...
Dazu müsste ich Dir die Funktions-Philosophie meiner Programmsteuerung zeigen/erklären.
An allen Arbeitsplätzen machen die User täglich viele Hilfsfenster auf und wieder zu. Im Büro sind das täglich Umengen an Hilfs-Fenstern. Da sprechen wir nicht von kleinen Auswahlfenstern für Sortierung, Drucker o.ä. - das sind immer vollständige EXE-Fenster mit allen Funktionen.
Dazu kommen noch die permanent geöffneten Fenster der Dokumenten-/Belegverwaltung.
Da kommt schon was zusammen.
Die automatische Positionierung muss funktionieren, sonst wird das Fensterschieben schnell lästig.
(es geht nicht mehr richtig - es ist schon lästig...)
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Roland !
Wenn nein, wäre es nicht möglich eine Taskleiste im Programm bzw. in einem Programm/Fenster-Manager zu haben?
Das heißt, er macht diese Fenster nicht zu sondern legt diese in die deine Taskleiste?
Ich habe das in meinen Programmen auch (aber nur eine EXE).
Guggst du hier:
Sind das modale Fenster?An allen Arbeitsplätzen machen die User täglich viele Hilfsfenster auf und wieder zu.
Wenn nein, wäre es nicht möglich eine Taskleiste im Programm bzw. in einem Programm/Fenster-Manager zu haben?
Das heißt, er macht diese Fenster nicht zu sondern legt diese in die deine Taskleiste?
Ich habe das in meinen Programmen auch (aber nur eine EXE).
Guggst du hier:
--
Hans-Peter
Hans-Peter
Re: größte freie Desktop-Fläche für neue Fenster
@Hans-Peter
am Ende des Tages hätte da mancher unüberschaubar viele Icons auf der Taskleiste
Die "normalen" Auswahlfenster (Sortierung, Drucker, usw.) sind Modal.
Die (Slave-) EXEs jedoch sind vollständig eingene Programme, gekoppelt mit dem aufrufenden (Master-) EXE. Dieses Master-/Slave-Prinzip ist (fast) unbegrnzt nutzbar (1 zu X). Also solange der User noch durchblickt.
Sonst mach er das Hauptfenster zu und alles ist weg...
Das kann ich Dir mal per Remote zeigen.
am Ende des Tages hätte da mancher unüberschaubar viele Icons auf der Taskleiste
Die "normalen" Auswahlfenster (Sortierung, Drucker, usw.) sind Modal.
Die (Slave-) EXEs jedoch sind vollständig eingene Programme, gekoppelt mit dem aufrufenden (Master-) EXE. Dieses Master-/Slave-Prinzip ist (fast) unbegrnzt nutzbar (1 zu X). Also solange der User noch durchblickt.
Sonst mach er das Hauptfenster zu und alles ist weg...
Das kann ich Dir mal per Remote zeigen.
Re: größte freie Desktop-Fläche für neue Fenster
P.S.
würde mich den richtigen Berechnungsansatz auch was kosten lassen
würde mich den richtigen Berechnungsansatz auch was kosten lassen
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2934
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: größte freie Desktop-Fläche für neue Fenster
Ich denke, dem Anwender ist schon zuzumuten, dass er nach der Installation des Programms einmalig seine Fenster so positioniert, wie er sie haben möchte.
Dann merkt man sich die Positionen der Fenster und öffnet sie beim nächsten Mal wieder an derselben Stelle. Hätte auch den Vorteil, das die Fenster immer an der "gewohnten" Stelle geöffnet werden.
Dann merkt man sich die Positionen der Fenster und öffnet sie beim nächsten Mal wieder an derselben Stelle. Hätte auch den Vorteil, das die Fenster immer an der "gewohnten" Stelle geöffnet werden.
Viele Grüße
Wolfgang
Wolfgang
Re: größte freie Desktop-Fläche für neue Fenster
@Hans-Peter
Es gibt die Möglichkeit, die Hilfsfenster geöffnet zu lassen. Das habe ich inzwischen selbst schon vergessen. Das wird aber nichtmehr verwendet da es verschiedentlich durch Fehlbedinung zu Problemen führte und manche User verwirrt hat.
Es gibt die Möglichkeit, die Hilfsfenster geöffnet zu lassen. Das habe ich inzwischen selbst schon vergessen. Das wird aber nichtmehr verwendet da es verschiedentlich durch Fehlbedinung zu Problemen führte und manche User verwirrt hat.
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: größte freie Desktop-Fläche für neue Fenster
Ich mache es so, dass jedes Fenster wo es geöffnet ist/war mit dessen Position und Grösse festgehalten wird und an derselben Stelle später wiedererscheint.In diesem Fall musst du einfach schauen, ob an der neuen Stelle ein Fenster momentan vorhanden ist (Falls verschiedene EXE dies bewirken, musst du das neben der Positionsangaben zusätzlich extern in einer Tabelle festhalten), springst eine Position weiter und schaust, ob ein Fenster da ist.
Falls alle Fenster gleich gross sind: Teile deinen Bildschirm in eigens benannte Bereichsflächen auf. Loop durch alle Flächen, schauen ob frei und falls frei, dann aufgrund der Fläche die Position festlegen und einfügen. Dies ist das Verhalten eines Dashboards.
In dem Fall kannst das Ganze sogar verfeinern, indem beim Verschieben eines Fensters an einen andern Platz, das vermeintlich dahinter liegende Fenster wegschiebst, also mit dem zu Schiebenden vertauschst. Dasselbe beim Schliessen: könntest die Nachfolgenden nachrücken lassen.
Diese Aufgabe kann eine eigene Klasse lösen.
Aber da taucht ein anderer Gedanke auf: Wieso müssen alle Fenster nebeneinander liegen? Braucht der Benutzer alle Informationen parallel? Heute sind die Windowsanwender intuitiv genug und schieben ohne zu überlegen die Fenster umher, wie gerade benötigt.
Bei Hilfefenstern ohnehin sollen diese sogar überlagernd erscheinen, es soll ja etwas erklärt werden, anschliessend in der Regel wieder geschlossen oder weggeschoben.
Falls alle Fenster gleich gross sind: Teile deinen Bildschirm in eigens benannte Bereichsflächen auf. Loop durch alle Flächen, schauen ob frei und falls frei, dann aufgrund der Fläche die Position festlegen und einfügen. Dies ist das Verhalten eines Dashboards.
In dem Fall kannst das Ganze sogar verfeinern, indem beim Verschieben eines Fensters an einen andern Platz, das vermeintlich dahinter liegende Fenster wegschiebst, also mit dem zu Schiebenden vertauschst. Dasselbe beim Schliessen: könntest die Nachfolgenden nachrücken lassen.
Diese Aufgabe kann eine eigene Klasse lösen.
Aber da taucht ein anderer Gedanke auf: Wieso müssen alle Fenster nebeneinander liegen? Braucht der Benutzer alle Informationen parallel? Heute sind die Windowsanwender intuitiv genug und schieben ohne zu überlegen die Fenster umher, wie gerade benötigt.
Bei Hilfefenstern ohnehin sollen diese sogar überlagernd erscheinen, es soll ja etwas erklärt werden, anschliessend in der Regel wieder geschlossen oder weggeschoben.
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- komnick
- UDF-Programmierer
- Beiträge: 75
- Registriert: Mi, 04. Jun 2014 9:56
- Wohnort: Berlin
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 5 Mal
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Roland,
du könntest die Aufgabe mit Rekursion lösen:
Wenn du n Fenster offen hast, dann betrachte das n-te Fenster: Der gesuchte Platz befindet sich über, unter, rechts oder links von diesem Fenster. Für jedes dieser vier kleineren Rechtecke musst du deine eigene Funktion rekursiv aufrufen. In diesen Aufrufen sucht deine Funktion den freien Platz unter Berücksichtigung der ersten (n-1) offenen Fenster.
Das wird bei vielen Fenstern langsam, wäre bei 2-6 Fenstern aber nicht so schlimm.
Lieben Gruß
Martin
du könntest die Aufgabe mit Rekursion lösen:
Wenn du n Fenster offen hast, dann betrachte das n-te Fenster: Der gesuchte Platz befindet sich über, unter, rechts oder links von diesem Fenster. Für jedes dieser vier kleineren Rechtecke musst du deine eigene Funktion rekursiv aufrufen. In diesen Aufrufen sucht deine Funktion den freien Platz unter Berücksichtigung der ersten (n-1) offenen Fenster.
Das wird bei vielen Fenstern langsam, wäre bei 2-6 Fenstern aber nicht so schlimm.
Lieben Gruß
Martin
Re: größte freie Desktop-Fläche für neue Fenster
So mache ich das mit bestimmten Fenstern auch.
War ein Fehler von mir das pauschal "Hilfsfenster" zu nennen - Neben-/Zusazufenster würde das eher treffen. Der nachfolgene Punkt bringt hoffentlich eine Detaillierte Erklärung warum.
Das ist der springende Punkt!
In den Zusatzfenstern können weitere Informationen angezeigt werden.
Z.B. um viel mehr Daten zu einem Artikel anzuzeigen wie in einem Hauptfenster möglich.
Z.B. um mehrstufige Auswertungen darzustellen, jede Stufe in einem eigenen Fenster.
Nun könnte man sagen, das kann ja mit jedem Programm gemacht werden, zig Fenster nebeneinander und in jedem eine andere Ansicht auf (z.B.) den Artikel.
Das Plus ist aber, dass die Fenster gekoppelt sind und die Daten überall synchron positioniert werden.
Praxisbeispiel:
1. Fenster: Artikel-Übersicht
2. Fenster: Artikel-Detailansicht 1 (abhängig von 1.)
3. Fenster: Lager-Disposition zum Artikel (abhängig von 1.)
4. Fenster: Kunden pro Artikel (abhängig von 1.)
5. Fenster: Kunden-Detailansicht 1 (abhängig von 4.)
Wird nun in Fenster 1 auf einen anderen Artikel positioniert werden die Daten in allen anderen Fenstern nachpositioniert.
Werden in Fenster 4 mehrere Adressen angezeigt kann man auch hier jetzt den Cursor bewegen und nur das Fenster 5 wird geändert.
Usw... solange man versteht was man da tut
Der User muss sich nicht um die Kopplung kümmern.
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Martin
Der Fenster-Verteilfunktion ist schon recht alt, da ist man noch nicht davon ausgegangen, dass mehr als 4 Fenster ohne Überlagerung auf den Desktop passen
So ähnlich habe ich das in der Vergangenheit auch gemacht, bzw. so sollte es laufen. Warum auch immer geht das manchmal nicht mehr. Ausgerechnet beim ersten Zusatzfenster mach das Programm den Fehler - und manchmal klappt das prima.komnick hat geschrieben: ↑Mo, 26. Mär 2018 10:42du könntest die Aufgabe mit Rekursion lösen:
Wenn du n Fenster offen hast, dann betrachte das n-te Fenster: Der gesuchte Platz befindet sich über, unter, rechts oder links von diesem Fenster. Für jedes dieser vier kleineren Rechtecke musst du deine eigene Funktion rekursiv aufrufen. In diesen Aufrufen sucht deine Funktion den freien Platz unter Berücksichtigung der ersten (n-1) offenen Fenster.
Der Fenster-Verteilfunktion ist schon recht alt, da ist man noch nicht davon ausgegangen, dass mehr als 4 Fenster ohne Überlagerung auf den Desktop passen
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Roland,
hast Du inzwischen eine zufriedenstellende Routine dafür?
Uli
P.S. Du bist nicht in Dresden, oder?
hast Du inzwischen eine zufriedenstellende Routine dafür?
Uli
P.S. Du bist nicht in Dresden, oder?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Re: größte freie Desktop-Fläche für neue Fenster
Hallo Uli
Das ist aber nicht der "neue Ansatz" den ich mir vorgestellt hatte...
Wie mann's nimmt. Wie schon geschrieben habe ich den Vorschlag von Martin aufgegriffen und eine ältere Berechnungsmethode wieder reaktiviert und verbessert, welche die freien Flächen um das Hauptfenster herum prüft und dort platziert. Ist aber noch nicht bis zuletzt durchgedacht.
Das ist aber nicht der "neue Ansatz" den ich mir vorgestellt hatte...
Nein - ich sitze bei dem schönen Wetter im Büro.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: größte freie Desktop-Fläche für neue Fenster
Ich habe mal ein paar Bilder zum besseren Verständnis gezeichnet Das rote Fenster ist ein bestehendes Fenster, welches nicht überlagert werden soll.
Die grünen Fenster (auch im nächsten Post) sind jeweils die größtmöglichen Fenster links, rechts, oben und unten vom bestehenden Fenster. In diesem Fall würdest Du also das neue Fenster entsprechend dem unteren grünen Fenster positionieren. Richtig?
Die grünen Fenster (auch im nächsten Post) sind jeweils die größtmöglichen Fenster links, rechts, oben und unten vom bestehenden Fenster. In diesem Fall würdest Du also das neue Fenster entsprechend dem unteren grünen Fenster positionieren. Richtig?
- Dateianhänge
-
- Größtmögliches Fenster rechts vom bestehenden Fenster
- FensterOben.png (868 Bytes) 11973 mal betrachtet
-
- Größtmögliches Fenster links vom bestehenden Fenster
- FensterLinks.png (871 Bytes) 11973 mal betrachtet
-
- Fenster, welches nicht verdeckt werden soll
- Fenster.png (864 Bytes) 11973 mal betrachtet
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: größte freie Desktop-Fläche für neue Fenster
s.o.
- Dateianhänge
-
- Größtmögliches Fenster unterhalb vom bestehenden Fenster
- FensterUnten.png (866 Bytes) 11971 mal betrachtet
-
- Größtmögliches Fenster rechts vom bestehenden Fenster
- FensterRechts.png (744 Bytes) 11971 mal betrachtet
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Re: größte freie Desktop-Fläche für neue Fenster
@Uli
Schritt 1)
Größtmögliche freie grüne Flächen suchen für weiteres rotes Fenster - soweit richtig.
Schritt 2)
Feststellen ob in die ermittelten grünen Flächen noch ein rotes Fenster vollständig reinpasst:
JA: Ganz unten ganz links (optimal?) platzieren. (in Deinem Beispiel)
(NEIN: siehe Schritt 4)
Schritt 3)
Selbiges Spiel für das dritte rote Fenster: Größtmögliche freie grüne Flächen suchen.
Schritt 4)
Feststellen ob in die ermittelten grünen Flächen noch ein rotes Fenster reinpasst:
JA: optimal platzieren
NEIN: größte grüne Fläche suchen welche die geringste Überlappung mit den vorhandenen roten Fenstern hat. Dort dann das nächste rote Fenster platzieren.
Schritt 5) usw...
- Optimal Platzieren soll heißen, dass das neue Fenster möglichst dort hingesetzt werden sollte bei der die übrigbleibende grüne Fläche nicht unnötig weiter zerteilt würde.
- Sind die Fenster groß und der Desktop klein würde man anders platzieren als bei großem Desktop und kleinen Fenstern.
Schritt 1)
Größtmögliche freie grüne Flächen suchen für weiteres rotes Fenster - soweit richtig.
Schritt 2)
Feststellen ob in die ermittelten grünen Flächen noch ein rotes Fenster vollständig reinpasst:
JA: Ganz unten ganz links (optimal?) platzieren. (in Deinem Beispiel)
(NEIN: siehe Schritt 4)
Schritt 3)
Selbiges Spiel für das dritte rote Fenster: Größtmögliche freie grüne Flächen suchen.
Schritt 4)
Feststellen ob in die ermittelten grünen Flächen noch ein rotes Fenster reinpasst:
JA: optimal platzieren
NEIN: größte grüne Fläche suchen welche die geringste Überlappung mit den vorhandenen roten Fenstern hat. Dort dann das nächste rote Fenster platzieren.
Schritt 5) usw...
- Optimal Platzieren soll heißen, dass das neue Fenster möglichst dort hingesetzt werden sollte bei der die übrigbleibende grüne Fläche nicht unnötig weiter zerteilt würde.
- Sind die Fenster groß und der Desktop klein würde man anders platzieren als bei großem Desktop und kleinen Fenstern.