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.