Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [FMX] Font eines dynamisch erzeugten Labels (https://www.delphipraxis.net/203033-%5Bfmx%5D-font-eines-dynamisch-erzeugten-labels.html)

Neutral General 6. Jan 2020 23:41


[FMX] Font eines dynamisch erzeugten Labels
 
Hallo,

Ich bin ein absoluter FMX Anfänger und ich wollte hier eine Reihe von Panels mit Labels in einer Scrollbox erstellen.
Der Code dafür sieht so aus:

Delphi-Quellcode:
var plEntry: TPanel;
    lbName: TLabel;

Scrollbox.BeginUpdate;
try
  // Erst mal alle Controls in der Scrollbox freigeben
  for i := Scrollbox.Content.ControlsCount-1 downto 0 do
    Scrollbox.Content.Controls.Delete(i);

  for i := 0 to AList.Count-1 do
  begin
    item := AList[i];

    plEntry := TPanel.Create(Self);
    plEntry.Parent := Scrollbox.Content;
    plEntry.Align := TAlignLayout.Top;
    plEntry.Height := 30;
    plEntry.Padding.Rect := RectF(5,2,5,2);
    plEntry.StyleLookup := 'plItemInnerStyle1'; // Funktioniert übrigens auch nicht
    plEntry.Tag := NativeInt(item);
    plEntry.OnClick := ClickItemEntry;

    lbName := TLabel.Create(Self);
    lbName.Parent := plEntry;
    lbName.Align := TAlignLayout.Client;
    lbName.TextSettings.Font.Family := 'Pristina';
    lbName.TextSettings.FontColor := rgbName; // Eigene Farbkonstante (die auch erfolgreich an anderen stellen genutzt wird)
    lbName.TextSettings.HorzAlign := TTextAlign.Leading;
    lbName.TextSettings.VertAlign := TTextAlign.Center;
    lbName.Tag := NativeInt(item);
    lbName.Text := item.Name;
    lbName.OnClick := ClickItemEntry;
  end;
finally
  Scrollbox.EndUpdate;
end;
Ich kann machen was ich will: Weder FontColor noch FontFamily des Labels wird berücksichtigt.
Und ich weiß nicht wo das Problem sein soll. Sowas würde in der VCL ohne Probleme funktionieren.

Das Zuweisen des Styles (existiert schon und wird für ein anderes Item genutzt)
Delphi-Quellcode:
plEntry.StyleLookup := 'plItemInnerStyle1';
hat übrigens auch keine Auswirkung.
Ansonsten klappt der Code. Die Panels mit den Labels wird erstellt und generell klappt auch alles. Bis auf die Font vom Label und den Style des Panels.
Weiß jemand was hier los ist?

Ich teste das auf meinem Android Handy.

Harry Stahl 7. Jan 2020 00:04

AW: [FMX] Font eines dynamisch erzeugtes Label
 
Wenn diese Attribute vom Standard-Stil abweichen sollen, musst Du diese in den Style-Settings deaktivieren...

Neutral General 7. Jan 2020 00:12

AW: [FMX] Font eines dynamisch erzeugtes Label
 
Danke, das hat geklappt!
Hast du eine Idee für das Panel?
Delphi-Quellcode:
plEntry.StyleLookup := 'plItemInnerStyle1';

Dieser Style ist ein Style eines anderen Panels was schon zur Designzeit existiert mit einer abweichenden Hintergrundfarbe.
Das dynamisch erstellte Panel übernimmt diesen Style (bzw. die Hintergrundfarbe?) allerdings nicht.

Harry Stahl 7. Jan 2020 19:40

AW: [FMX] Font eines dynamisch erzeugten Labels
 
Sollte aber eigentlich so funktionieren (jedenfalls hier unter Windows funktioniert Dein Beispiel). Stimmt der Name wirklich überein (die 1 und l kann man je nach Schriftart schon mal schnell verwechseln)...

Kleiner Hinweis: Statt TPanel zu verwenden, bietet es sich oft an, TRectangle zu nehmen, da man dort per Eigenschaft ".Fill" ganz einfach die Hintergrundfarbe verändern kann...


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf