![]() |
Collapsible Margins
Hallo,
Es gibt seit einiger Zeit die Margins-Eigenschaft für jedes Steuerelement, aber zwei benachbarte Steuerelement werden ihre Margins nicht verschmelzen, sondern addieren. Bei CSS gibt es collapsible margins, zumindest für vertikal angeordnete Block-Element. Auf Delphi übertragen: Nun möchte ich horizontal z.B. 3 Steuerelemente ausrichten die alle den gleichen Abstand zueinander haben. Dafür setze ich Margins.Left und Margins.Right auf jeweils 10 und aktiviere AlignWithMargins. Das funktioniert gut für die Ränder, also dort wo die Steuerelemente auf die Fensterränder treffen. Der Leerraum zwischen zwei benachbarten Steuerelementen (A und B) wird nun aber 20, da sich A.Margins.Right und B.Margins.Left addieren, anstatt zu 10 zu verschmelzen. Man kann natürlich rumpfuschen, und nur Margins.Left auf 10 setzten (Margins.Right aber auf 0), und dann beim letzten Steuerelement in der Liste Margins.Right auf 10 setzen. Aber der Punkt ist dass die Ausrichtung automatisch funktionieren soll, auch wenn die Reihenfolge der Steuerelemente sich ändert. Hat jemand einen Weg gefunden dass in der VCL zu erreichen? Mein Ansatz war TMargins zu überschreiben (und dann den Steuerelementen zuzuweisen). Aber wie findet man heraus was das benachbarte Steuerelement sein wird, während des Alignments? |
AW: Collapsible Margins
Zitat:
|
AW: Collapsible Margins
Zitat:
Frank |
AW: Collapsible Margins
Zitat:
Zitat:
Für ein Grid-Panel wäre dann z.B. die Zuordnung von Listen-Index zu Spalte/Zeile mit einer Art mod/div-Rechnung erledigt, als Pseudocode:
Code:
Danke für die Antworten.
Row = Index div ColsPerRow;
Col = Index mod ColsPerRow; Ich habe mich entschieden in einem Descendant von TCustomControl das Layout zu übernehmen, analog zu TGridPanel und ähnlichen Steuerelementen. Ist für meinem konkreten Fall wohl das Einfachste. Etwas schade dass die VCL das nicht einfacher macht. Aber WPF und CSS sind da auch umständlich, auch wenn es da zumindest "dirty hacks" gibt. |
AW: Collapsible Margins
Peter hatte doch schon die Lösung beschrieben:
Zitat:
|
AW: Collapsible Margins
Zitat:
Für das Beispiel würde es funktionieren, aber es sind nicht immer 10 Pixel zwischen allen Controls und dem Fensterrand. Es kann im allgemeinen Fall variieren, und dann muss man wieder wissen welches Control wohinkommt, damit man das Parent.Padding richtig anpasst. Man muss also immer abgleichen mit allen anderen Controls/Parent um zu sehen was man korrigieren muss. |
AW: Collapsible Margins
Ist XE3 deine aktuelle Delphi-Version?
In neueren gibt es das ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 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