Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.771 Beiträge
 
Delphi 12 Athens
 
#40

AW: falsche Anordnung von TPanels

  Alt 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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat