![]() |
FMX "Unterkomponente"
Hallo,
ich erzeuge einen Button mit darauf liegendem Label, welches oben links in der Ecke anzeigen soll:
Delphi-Quellcode:
das funktioniert auch, aber wenn ich dann auf das Label zugreifen möchte:Result := TButton.Create(GridPanelLayout1); Result.Align := TAlignLayout.Client; Result.StyledSettings := []; lbl:=TLabel.Create(Result); lbl.Parent:=Result; lbl.Align := TAlignLayout.Client; lbl.TextSettings.VertAlign:=TTextalign.Leading; lbl.StyledSettings := []; lbl.TextSettings.Font.Size:=9; lbl.Margins.Left:=3; lbl.Margins.top:=3;
Delphi-Quellcode:
knallt es, bei btn.Children[1] funktioniert es wie erwartet.lbl := TLabel(btn.Children[0]); lbl.Text:='x'; btn.Childrencount ist im Debugger = 2! Wieso, ich möchte verstehen warum das eine eingebettete Control nicht über Index = 0 zu erreichen ist! Ciao Stefan |
AW: FMX "Unterkomponente"
Wenn du dir nicht sicher bist oder du merkst, dass da was nicht stimmt, dann
Delphi-Quellcode:
lbl := (btn.Children[0] as TLabel);
oder
Delphi-Quellcode:
:stupid:
ShowMessage(Children[0].ClassName); // bzw. Children[0].ClassName im Debugger ansehn
PS: ![]() Components = Owner Controls = Parent Children = sonstwas |
AW: FMX "Unterkomponente"
Zitat:
da kommt als Children[0] ein TLayout und dann als Children[1] das TLabel! Muss ich nun in einer Schleife alle Children auf TLabel prüfen oder darf ich mit Sicherheit davon ausgehen, dass immer Children[1] hier das Label ist? Ciao Stefan |
AW: FMX "Unterkomponente"
Zitat:
Behalte die Referenz auf das Label das zu selbst hinzugefügt hast. So kannst du immer sicher sein. Ich persönlich würde mich nicht darauf verlassen dass es immer an Stelle [1] sein wird! |
AW: FMX "Unterkomponente"
Tipp: Ich hatte oben noch was hinzugefügt. :zwinker:
Zitat:
|
AW: FMX "Unterkomponente"
Hallo,
FMX Komponenten werden oft über die Stile mit allen möglichen Zutaten gefüllt, daher muss man davon ausgehen, dass in einem Control eine Menge andere Sachen sind, je nach gewähltem Stil. Nebenbei: Das Einfügen einer Unterkomponente klappt ganz gut auch im Designer, hier einfach das Label in der Baumansicht auf den Button ziehen. Das ist besonders praktisch bei Verwendung einer THeaders Komponente. Grüsse, Julian |
AW: FMX "Unterkomponente"
Zitat:
Ciao Stefan Nachtrag: Habe noch einen besseren Weg gefunden : eine eigene Ableitung von TButton welche dann um das Label erweitert wird, damit ist dann der Zugriff darauf auch abgesichert... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz