Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.771 Beiträge
Delphi 12 Athens
|
AW: falsche Anordnung von TPanels
13. Jun 2025, 10:07
Die Anzeigeposition wird durch den Top-Wert (Position.Y) bestimmt. Beim sichtbar machen bzw. setzen der Height auf einen höheren Wert ist aber die Reihenfolge der Controls wichtig, da diese das Align beeinflusst.
Beispiel: Panel1, Panel2, Panel2 sind untereinander angeordnet und liegen auch in dieser Control-Reihenfolge vor. Nun wird Panel2.Height auf 0 gesetzt. Damit bekommt Panel3 dieselbe Top-Position wie Panel2. Beim Align werden die Panels von 1 bis 3 angeordnet und somit liegt Panel2 immer noch vor Panel3.
Wäre die Reihenfolge Panel1, Panel3, Panel2 dann verschiebt sich Panel3 vor Panel2, sobald Panel2 eine Height von 0 bekommt. Ab dann kann es ohne weitere Maßnahmen nicht mehr heilen.
Also, Vorrang hat die Top-Position, aber bei gleichen Werten wird die Control-Order beachtet.
Dein ursprüngliches Beispiel sah kein Vertauschen der Controls vor. Daher wurde das da auch nicht berücksichtigt.
Das Swap-Controls muss also neben der Control-Order auch die Top-Position vertauschen damit das wieder richtig aussieht. Das ganze sollte dann auch in ein DisableAlign/EnableAlign gekapselt werden.
|