Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: FMX - TLabel automatische Höhenanpassung

  Alt 17. Feb 2016, 17:10
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
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat