![]() |
WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Liste der Anhänge anzeigen (Anzahl: 1)
In 11.3 wird ein Formalar zu groß maximiert, sobald man bei Constraints.MaxWidth einen Wert setzt.
Dabei verschwindet der unter Bereich unter der Taskleiste. Ist aber Constraints.MaxWidth = 0, dann wird genau an die Taskleiste maximiert. Eine simple Demo (nur Quellen) ist als Anhang beigefügt. Kann das jemand bei sich nachvollziehen? |
AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Liste der Anhänge anzeigen (Anzahl: 2)
Dachte erst du hättes geskint, oder so.
Jupp, Stimmt. Es wird beim Maximieren die WorkArea ignoiert (die Startleiste und Sidebars sind da nicht enthalten). PS: MaxWidth setzen, während es maximiert ist, dann passt alles. Zusätzlich stimmt auch mit der Titelleiste etwas nicht. Ringsum ist das Fenster im Windows 10/11 ja eigentlich etwas größer, für den Schatten. Und genau um diese Größe ist die Titelleiste zu breit. Und noch was, wenn ich im Windows 11 das Fenster manuell verkleinere und langsam wieder vergrößere, dann bleibt der Rahmen es Panels auf der CheckBox zurück. |
AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Ich werde das mal nächste Woche mit XE7 und Delphi 10 testen und mal schauen, was da verschlimmbessert wurde.
|
AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Mit XE7 und 10.4 funtioniert es auch nicht richtig. Anscheinend benutzt das niemand. Das werde ich dann auch nicht und weiterhin mit WM_GETMINMAXINFO arbeiten.
|
AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Gibt es dafür schon einen QP-Eintrag?
|
AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Ich bin mir recht sicher, das Windows den Fehler verursacht. Bei mir habe ich 2 Monitore.
Mein erster Monitor (Primär) 1920 x 1080 und der zweite 1920 x 1200 sind wohl die Ursache. Wenn ClientWidth gesetzt wird, so wird zur Berechnung der maximale Höhe der 2. Monitor verwendet. Diese Höhe wird aber nicht in der Unit Vcl.Forms gesetzt. Für mich sieht es so aus, dass das Windows selbst so setzt. Ich habe jetze eine neue Basisklasse für alle Forms mit begrenzter Breite und variabler Höhe, die per
Delphi-Quellcode:
das Problem behebt.
procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
Mich hat es eh gestört, das bei fester Breite beim Maximieren Left auf 0 gesetzt wird. Auch das konnte ich damit lösen. Wenn man nur einen Monitor oder zwei identische hat, wird mal diese Problem nicht haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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