Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#1

FMX - TLabel automatische Höhenanpassung

  Alt 17. Feb 2016, 13:50
Mahlzeit,

gegeben seien ein TLabel mit Align Top und eine beliebige andere Komponente (z.B. ein Panel oder ein TabControl) mit Align Client. Der Text des Labels wird zur Laufzeit gesetzt. Ich möchte erreichen, dass sich dieses je nach Text und Ausrichtung des Geräts dynamisch in der Höhe anpasst. AutoSize steht auf false, WordWrap auf true, momentan wird zu Testzwecken an verschiedenen Stellen (Events) der folgende Code durchlaufen.
Delphi-Quellcode:
procedure TfrmDingens.SetLabelHeight(const ALabel: TLabel);
var
  Layout: TTextLayout;
begin
  Canvas.BeginScene;
  try
    Layout := TTextLayoutManager.DefaultTextLayout.Create(ALabel.Canvas);
    try
      Layout.BeginUpdate;
      try
        Layout.TopLeft := PointF(0, 0);
        Layout.MaxSize := PointF(ALabel.AbsoluteRect.Width, MAXINT);
        Layout.Text := ALabel.Text;
        Layout.WordWrap := ALabel.TextSettings.WordWrap;
        Layout.HorizontalAlign := ALabel.TextSettings.HorzAlign;
        Layout.VerticalAlign := ALabel.TextSettings.VertAlign;
        Layout.Font.Assign(ALabel.TextSettings.Font);
        Layout.RightToLeft := false;
      finally
        Layout.EndUpdate;
        ALabel.Size.Height := ALabel.Margins.Height +
          Layout.TextRect.Height;
      end;
    finally
      Layout.Free;
    end;
  finally
    Canvas.EndScene;
  end;
end;
Unter Windows klappt das recht gut, z.B. im OnPainting des Formulars. Unter Android und iOS hingegen stimmt die Höhe überhaupt nicht. Bin ich völlig auf dem Holzweg, oder habe ich etwas übersehen?

Danke im Voraus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat