AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

falsche Anordnung von TPanels

Ein Thema von Geri · begonnen am 3. Jun 2025 · letzter Beitrag vom 13. Jun 2025
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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
Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
72 Beiträge
 
Delphi 2005 Personal
 
#2

AW: falsche Anordnung von TPanels

  Alt 13. Jun 2025, 10:28
Vielen Dank Uwe!

Hat das aber auch Einfluss auf die Anzeigereihenfolge innerhalb eines Panels?

Ich habe 7 Cornerbuttons in einem Panel so parametriert.
btnAxisName0.align = left
btnAxisBuzzer0.align = left
btnAxisW0.align = right
btnAxisDiv0.align = right
btnAxisShiftEnable0.align = right
btnAxisValue0.align = client
btnAxisUnit0.align = right

Nach meinem Verständnis müssten die Elemente, wenn die childrenliste so aufgebaut ist, von links nach rechts so gezeichnet werden:

btnAxisName0 - btnAxisBuzzer0 - btnAxisValue0 - btnAxisUnit0.align - btnAxisShiftEnable0 - btnAxisDiv0 btnAxisW0.align

Die Reihenfolge der 6 Panels passt mir nach deinen Hinweisen schon aber die Reihnfolge der Buttons innerhalb der Panels stimmt nicht.

Mit der Testroutine und Aufruf
SwapControls(btnAxisw0, btnAxisDiv0); hätte ich erwartet, dass sich die Reihenfolge bei der Anzeige innerhalb des selben Panels ändert. Die Parameter Height , Enalbe, Hittest etc. bleiben ja gleich.
Gerhard

Geändert von Geri (13. Jun 2025 um 13:25 Uhr) Grund: Fehler bei Angabe zu Alignment behoben
  Mit Zitat antworten Zitat
Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
72 Beiträge
 
Delphi 2005 Personal
 
#3

AW: falsche Anordnung von TPanels

  Alt 13. Jun 2025, 10:43
Anbei noch ein Bild, wie die Reihenfolge der Anzeige nach meinem Verständnis eigentlich sein müsste.
Angehängte Grafiken
Dateityp: png gewwünschte_Anezigereihenfolge.png (20,6 KB, 17x aufgerufen)
Gerhard
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:05 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