AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

Ein Thema von AuronTLG · begonnen am 10. Okt 2022 · letzter Beitrag vom 10. Okt 2022
Antwort Antwort
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#1

Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

  Alt 10. Okt 2022, 15:12
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.
  • Allesamt auf Align = None und danach einzeln wieder Align = Top setzen führt zu Chaos.
  • Nacheinander Align = MostTop und wieder Align = Top setzen tut überhaupt nichts.
  • Herumspielen mit Position.Y ist problematisch, da dies sowohl Alignment als auch Margins etc übergeht. Käme nur als Notfall-Brute-Force-Lösung in Betracht
  • Listbox o.Ä. missbrauchen wäre aufwendig und unschön

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?
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

  Alt 10. Okt 2022, 15:33
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.105 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

  Alt 10. Okt 2022, 15:36
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#4

AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

  Alt 10. Okt 2022, 15:42
Enabled=False
und Height=0 oder 1 ähhh 0.0001
so bleibt alles in der Reihenfolge, weil es nie wirklich weg ist.
Genau
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.
Falls es doch nur um Ausblenden geht.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verändern/Durchsetzen der Reihenfolge von Kompenten mit Alignments in Firemonkey

  Alt 10. Okt 2022, 16:11
Das Vorgehen mit Bottom -> Top und der Sichtbarkeit funktioniert und ist genau das, was ich gesucht habe.
Super, danke!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz