Seite 1 von 1

Fensterpositionen speichern

Verfasst: Dienstag 13. Juni 2017, 10:58
von Philipp K.
Ich würde mir wünschen, dass sich BAHN beim Schließen die Position und den Maximierungszustand von Hauptfenster und Werkzeugkasten merkt (falls das eigentlich bereits funktionieren sollte, scheitert es vlt. daran, dass ich zwei Bildschirme habe).

Konkret startet sich BAHN bei mir jedes Mal so, dass der Werkzeugkasten irgendwo in der oberen Hälfte des ersten Bildschirms ist. Das Hauptfenster hat die Höhe des Hauptbildschirms aber nur ca. halbe Breite, und befindet sich im rechten unteren Viertel des Bildschirms. Das heißt, dass ich nach jedem BAHN-Start erstmal den Werkzeugkasten in den zweiten Bildschirm schieben und das Hauptfenster maximieren muss (und zwar in genau dieser Reihenfolge; sonst ist das Werkzeugfenster verdeckt vom Hauptfenster).

Re: Fensterpositionen speichern

Verfasst: Mittwoch 14. Juni 2017, 10:01
von Jan Bochmann
Guten Tag,
Philipp K. hat geschrieben:Ich würde mir wünschen, dass sich BAHN beim Schließen die Position und den Maximierungszustand von Hauptfenster und Werkzeugkasten merkt
Die Positionen werden gespeichert, wenn das automatische Speichern der Einstellungen beim Programmende eingeschaltet ist. Zu finden unter "Optionen" - "Verschiedene Optionen", dort die 1. Zeile.

Allerdings wird der Zustand "maximiert" nicht gespeichert. Für das Statusfenster ("Werkzeugkasten") wäre das Unsinn, da es nicht maximierbar ist. Bei den Editfenstern ist das Absicht, weil ein maximiertes Editfenster immer das Statusfenster überlappt und es damit unsichtbar macht - jedenfalls auf einem System mit nur einem Monitor. Wenn man das eben gemacht hat, dann weiß man es noch und kann es rückgängig machen. Wenn man aber BAHN nach längerer Zeit mal wieder startet, fängt man an, das Statusfenster zu suchen.
Philipp K. hat geschrieben: (falls das eigentlich bereits funktionieren sollte, scheitert es vlt. daran, dass ich zwei Bildschirme habe).
Das könnte die Sache noch extra beeinflussen. Guck mal in die Datei "bahn.ini", was dort unter "Fenster0" und "Fenster1" steht. Bei Fenster0 (Statusfenster) sollten die beiden Zahlen die Koordinaten der linken oberen Ecke sein. Bei Fenster1 (Editfenster) sind die ersten beiden Zahlen die Koordinaten der linken oberen Ecke, danach folgen Breite und Höhe. Auf Multi-Monitor-Systemen liefern Windows bzw. der Grafiktreiber aber manchmal ziemlich abwegige Werte, mit denen BAHN nichts anfangen kann oder die jedenfalls beim Starten zu seltsamen Anordnungen führen.
Philipp K. hat geschrieben: Konkret startet sich BAHN bei mir jedes Mal so, dass der Werkzeugkasten irgendwo in der oberen Hälfte des ersten Bildschirms ist. Das Hauptfenster hat die Höhe des Hauptbildschirms aber nur ca. halbe Breite, und befindet sich im rechten unteren Viertel des Bildschirms. Das heißt, dass ich nach jedem BAHN-Start erstmal den Werkzeugkasten in den zweiten Bildschirm schieben und das Hauptfenster maximieren muss (und zwar in genau dieser Reihenfolge; sonst ist das Werkzeugfenster verdeckt vom Hauptfenster).
Wenn BAHN beim Starten keine Werte in der Datei "bahn.ini" findet oder wenn diese Werte nicht zum System passen (man kann ja z.B. mal einen anderen Monitor anschließen), dann versucht es die Standardanordnung. Das ist das selbe, was auch bei "Fenster" - "Anordnen" (Hotkey >F6<) passiert. Allerdings kann es sein, daß hierbei nur die Werte des 1. Monitors berücksichtigt werden und nicht die des Gesamtsystems. Diese Werte werden unter "Hilfe" - "Statusinfos" angezeigt (unter "Grafik", ziemlich weit unten). Passen die Werte zu Deinem Gesamt-System oder ist da vielleicht etwas falsch? Das wäre dann wahrscheinlich die Ursache.

Grüße,
Jan B.

Re: Fensterpositionen speichern

Verfasst: Donnerstag 15. Juni 2017, 18:19
von Philipp K.
Hallo Jan,

vielen Dank für die ausführliche Antwort!

In der Ini steht (nachdem ich das Statusfenster auf dem zweiten Bildschirm platziert habe und das Editfenster auf dem ersten maximiert habe):

Code: Alles auswählen

Fenster0=S,-1065,386
Fenster1=637,-11,1492,1593,N,1,L
In den Statusinformationen steht:

Code: Alles auswählen

Grafik: 32 Bit per Pixel (bpp), Monitore: 1
 Auflösung (Pixel): Breite × Höhe  1920 × 1080
BAHN sieht also nur einen der beiden Monitore (als zusätzliche Herausforderung für BAHN: Die haben verschiedene Auflösungen; der andere hat 1280*1024 und ist links vom ersten angeordnet, an der Oberkante ausgerichtet.)

Nun konnte ich folgendes beobachten:
- Bei maximiertem Editfenster speichert BAHN die o.g. abstrusen Größenwerte (1593 Pixel hoch), anstelle der 1920*1080, die das maximieren auf dem ersten Bildschirm ergeben müsste. Bei nicht maximiertem Editfenster werden plausible Größenwerte gespeichert.
- Die Koordinaten des Statusfensters werden zwar korrekt gespeichert (z.B. 47,28), aber das Fenster taucht nicht wieder an dieser Stelle auf, sondern befindet sich oben in der Bildschirmmitte, statt oben links.
- Auf einem anderen System mit nur einem Monitor arbeitet alles wie erwartet

Re: Fensterpositionen speichern

Verfasst: Montag 3. Juli 2017, 12:55
von Jan Bochmann
Guten Tag,
Philipp K. hat geschrieben:Hallo Jan,

vielen Dank für die ausführliche Antwort!

In der Ini steht (nachdem ich das Statusfenster auf dem zweiten Bildschirm platziert habe und das Editfenster auf dem ersten maximiert habe):

Code: Alles auswählen

Fenster0=S,-1065,386
Fenster1=637,-11,1492,1593,N,1,L
In den Statusinformationen steht:

Code: Alles auswählen

Grafik: 32 Bit per Pixel (bpp), Monitore: 1
 Auflösung (Pixel): Breite × Höhe  1920 × 1080
BAHN sieht also nur einen der beiden Monitore (als zusätzliche Herausforderung für BAHN: Die haben verschiedene Auflösungen; der andere hat 1280*1024 und ist links vom ersten angeordnet, an der Oberkante ausgerichtet.)
Was soll man sich denn bei so einer Konfiguration unter einem "maximierten" Fenster vorstellen?

a) eines von (1280+1920) x (1024+1080), dann ist aber eine Ecke links unten nicht sichtbar

b) eines ohne diese Ecke (da sind verschiedene Varianten denkbar)

Das ist letztlich ein konzeptionelles Problem: Die Idee des "Maximierens" stammt aus der Urzeit der grafischen Nutzeroberflächen. Damals waren die Bildschirme klein und die Auflösung niedrig, und vor allem dachte noch niemand an die Möglichkeit mehrerer Monitore. Heute ist das eigentlich schon lange obsolet und paßt gar nicht mehr ins Konzept. Entsprechend zweifelhaft und unklar sind dann auch die Varianten, wie damit umgegangen wird. Die hier von BAHN erfaßten Daten sind möglicherweise reine Zufallswerte, weil Windows bei maximiertem Fenster wahrscheinlich gar keine korrekten Werte übergibt, sondern nur die Info "Fenster ist maximiert". Das kann aber von der Windows-Version und den Gerätetreibern abhängen (Grafikkarte[n], Monitor[e]). Bei BAHN war das Maximieren noch nie besonders sinnvoll, weil dann das Statusfenster unsichtbar ist. Ich habe es selbst eigentlich nie benutzt, verwende es aber auch bei keiner anderen Software.
Philipp K. hat geschrieben: Nun konnte ich folgendes beobachten:
- Bei maximiertem Editfenster speichert BAHN die o.g. abstrusen Größenwerte (1593 Pixel hoch), anstelle der 1920*1080, die das maximieren auf dem ersten Bildschirm ergeben müsste. Bei nicht maximiertem Editfenster werden plausible Größenwerte gespeichert.
- Die Koordinaten des Statusfensters werden zwar korrekt gespeichert (z.B. 47,28), aber das Fenster taucht nicht wieder an dieser Stelle auf, sondern befindet sich oben in der Bildschirmmitte, statt oben links.
Das Statusfenster wird von BAHN immer mittig plaziert (in Ost-West-Richtung), d.h. die x-Koordinate wird ignoriert.

Bei den Editfenstern werden die Werte geprüft und mit denen des aktuellen Computers verglichen. Wenn ein Fenster dabei außerhalb liegt, dann versucht BAHN, es irgendwo innen zu plazieren. Ansonsten verwendet es die gespeicherten Werte.
Der Sinn darin ist folgender: Wenn man einen großen Monitor hat - oder mehrere - und die Fenster dort irgendwohin setzt, aber später mal einen kleineren Monitor anschließt oder nur einen Teil der zuvor vorhandenen, dann sollen die Fenster sichtbar sein und nicht versehentlich außerhalb liegen, wo man sie 1. nicht sehen kann und 2. auch nicht wieder weg bekommt, weil man sie nicht anklicken kann.

Wenn nun aber der 2. Monitor nicht erkannt wird oder jedenfalls nur die Werte des 1. gefunden werden, dann gilt die o.g. Einschränkung auch nur innerhalb dieser Werte.

Danke für die Details, ich werde mir das noch näher ansehen. Wahrscheinlich gibt es aber keine allgemein verwendbare Lösung.

Grüße,
Jan B.