![]() |
Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey
Moin,
Ich habe in FMX ein Layout, in welchem mehrere Buttons mit Top-Alignment untereinander aufgelistet sind. Unter bestimmten Umständen wird ein Teil der Buttons unsichtbar bzw wieder sichtbar gesetzt. Nach dem wieder sichtbar setzen stimmt jedoch oft die Reihenfolge nicht mehr, weswegen ich eine Methode zur Durchsetzung der gewünschten Reihenfolge implementieren wollte, was sich aber als deutlich problematischer als gedacht herausgestellt hat.
Mir gehen so langsam die Ideen aus, obwohl es doch eigentlich eine simple Lösung dafür geben müsste... Hat hier vielleicht jemand solche dafür? |
AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey
Du meinst während Runtime ?
Das mache ich eher selten. Normalerweise geht es mit "Nacheinander Align = MostTop und wieder Align = Top" ganz gut. Oder mit Bottom/Top, ich baue da immer eine kleine Entkopplung ein damit es sich ordentlich aufbaut, so in der Art:
Delphi-Quellcode:
procedure MyForm:ReOrder;
begin Button1.Align := Bottom; Button1.Visible := False; Button2.Align := Bottom; Button2.Visible := False; Button3.Align := Bottom; Button3.Visible := False; TThread.ForceQueue( nil, procedure begin Button1.Visible := True; Button1.Align := Top; Button2.Visible := True; Button2.Align := Top; Button3.Visible := True; Button3.Align := Top; end ); end; Es gäbe aber auch andere Möglichkeiten, z.B. die Buttons in einzelne TLayouts mit AlignLayout := Top; zu werfen, welche dann die Reihenfolge beibehalten. Dann könnten die Buttons Visible := True/False geschaltet werden und gleichzeitig die Layouts.Height := 0 oder 80; Bin momentan nicht ganz sicher ob Layout1.Height := 0.0; geht, oder ob es := 1; sein sollte, ich meine aber auch mit 0 sollte es gehen. |
AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey
Enabled=False
und Height=0 oder 1 ähhh 0.0001 so bleibt alles in der Reihenfolge, weil es nie wirklich weg ist. Align + Top setzen müsste es nicht dennoch gehn? In der VCL hatte ich es mal so gemacht: einfach nacheinander, in der gewünschten Reihenfolge Top auf ganz groß (größer als das letzte alTop-Control) setzen * Top setzt es runter * und Align zieht es dann jeweils als letztes alTop zurück * anschließend das kommt ds nächste Control und richtet sich wieder als Letztes ein usw. oder ja, Alles auf Hide und in der Reihenfolge wieder auf Top=groß und dann Visible, was Visible sein soll |
AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey
Zitat:
Zitat:
|
AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey
Das Vorgehen mit Bottom -> Top und der Sichtbarkeit funktioniert und ist genau das, was ich gesucht habe.
Super, danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 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