AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert
Thema durchsuchen
Ansicht
Themen-Optionen

WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

Ein Thema von BerndS · begonnen am 26. Mai 2023 · letzter Beitrag vom 30. Mai 2023
Antwort Antwort
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#1

WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

  Alt 26. Mai 2023, 15:04
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?
Angehängte Dateien
Dateityp: zip TestConstraints.zip (85,2 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

  Alt 26. Mai 2023, 16:30
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.
Miniaturansicht angehängter Grafiken
titelbar11.png   schatten11.png  
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Mai 2023 um 16:36 Uhr)
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#3

AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

  Alt 26. Mai 2023, 21:53
Ich werde das mal nächste Woche mit XE7 und Delphi 10 testen und mal schauen, was da verschlimmbessert wurde.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#4

AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

  Alt 30. Mai 2023, 08:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#5

AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

  Alt 30. Mai 2023, 11:26
Gibt es dafür schon einen QP-Eintrag?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#6

AW: WennTForm.Constraints.MaxWidth gesetzt, wird das Formular falsch maximiert

  Alt 30. Mai 2023, 11:57
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
    procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; das Problem behebt.
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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