Kann ich jetzt gerade nicht nachvollziehen, aber sollte man die Margins.Height
nicht zweimal berücksichtigen? Und bei LayOut.MaxSize
nicht auch die Breite?
Ergibt sich Margins.Height nicht aus Bottom und Top? Wenn nicht, habe ich das wohl fehlinterpretiert. Und die MaxSize soll eigentlich die aktuelle Breite sein, deshalb AbsoluteRect.Width. Ich bin verwirrt.
Moment mal -
Margins
gibt doch den Abstand zwischen zwei Controls im selben Container an, wirkt also nur außerhalb der Größe des Labels, während
Padding
den Abstand zu den inneren Elementen angibt, sich aber nicht auf den Abstand des Texts zum Labelrand auswirkt. Insofern ist die Angabe der Breite wohl korrekt, aber bei der Höhe dürfte
Margins
nicht berücksichtigt werden.
Kurios: Bei
Margins.Height
wird witzigerweise
Bottom - Top
zurückgegeben, da hier schlicht das darunterliegende
TRectF.Height
befragt wird (wer nimmt denn auch ein Rechteck als Speicher für die Ränder
). Eigentlich macht diese Angabe aber bei Rändern keinen Sinn.
Kurioser: Diese Eigenschaften werden in FMX tatsächlich verwendet:
Delphi-Quellcode:
StyleControl.SetBounds(StyleControl.Margins.Left, StyleControl.Margins.Top,
Width - StyleControl.Margins.Width, Height - StyleControl.Margins.Height);
Das führt jetzt dazu, daß das
SetBounds
in der Breite
Width - Margins.Right + Margins.Left
und in der Höhe
Height - Margins.Bottom + Margins.Top
verwendet. Ich hätte jetzt
Width - Margins.Left - Margins.Right
und
Height - Margins.Bottom - Margins.Top
erwartet. Entweder steh' ich jetzt auf dem Schlauch oder das ist ein ganz böser Bug