![]() |
Probleme mit Panel und Align
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich nutze in meinem Programm zwei Panels, einen als obere Leiste und einen als Rechte Leiste. Leider werden die Panels nicht so angezeigt wie ich mir das denke. Also Panel1 hat Align=alTop und Panel2 hat Align=alRight nun ist es aber so, dass der Panel1 von Links oben bis rechts oben durchgängig ist und mein Panel2 auf der rechten Seite nicht bis oben geht, ich würde aber es gerne anders herum haben. (habe mal einen Screenshot angehängt) Evtl wisst ihr ja wie man da die Prioriät ändern kann. Danke euch |
Re: Probleme mit Panel und Align
Moin, Moin,
vermutlich funktioniert es, wenn du die beiden Panels in der umgekehrten Reihenfolge placierst. Erst Panel2 mit Align=top,bottom und right, dann das Panel1 |
Re: Probleme mit Panel und Align
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Zitat:
Nutze ein drittes Panel, wenn sich keine andere Lösung finden sollte. Panel1 => alRight Panel3 => alClient mit BevelOuter => bvNone Panel2 => alTop mit Parent => Panel3 Edit1: Kommentar zu taaktaak Edit2: Screenshot |
Re: Probleme mit Panel und Align
taaktaak hat schon recht. Die von dir genannte "Priorität" ist die Z-Reihenfolge der Controls. In Visual Studio hilft dazu ein profanes "In den Vordergrund". Ich weiß nicht, wie genau man das in Delphi macht. Das Prinzip ist aber dasselbe.
|
Re: Probleme mit Panel und Align
Zitat:
Du kannst VS nicht mir der Delphi-IDE vergleichen. Ich habe alles ausprobiert, was die Reihenfolge anbelangt; sowohl zur Designtime als auch zur Runtime. Auch 'Element -> Nach vorne setzen' hilft nicht. |
Re: Probleme mit Panel und Align
Jepp, mein Beitrag ist aber trotzdem nicht die Lösung :oops: Die Vorgehensweise von s-off führt zum Erfolg
|
Re: Probleme mit Panel und Align
Zitat:
Aber dennoch macht es mich stutzig, dass es keine ordentliche Lösung gibt. Mein Ansatz ist zwar eine Lösung, aber wohl eher eine dahingefrickelte Umgehungslösung :? |
Re: Probleme mit Panel und Align
Hat mich auch schonmal generft, folgendermaßen "gelöst".
Einfach ein zusätzliches Panel: - Panel1 -> alRight - Panel2 -> alClient - auf Panel2 ein Panel3 -> alTop ups... schon genannt... Edit: erst lesen dan schreiben -.- |
Re: Probleme mit Panel und Align
Ich (Delphi 2006) kämpfe gerade mit demselben Problem - mit dem Unterschied, daß es A. in einer nicht mehr praktikablen Kombination bereits anders klappte, und B. der Workaround hier auch nicht zutrifft.
Grob gesehen habe ich die gleiche Situation: eine linke Leiste, eine Kopfzeile oben, eine Fusszeile unten. Da ich hier dieselbe Struktur allerdings in einem Dutzend Fenstern habe, verwende ich dafür eine eigene Klasse, die ich in der Formular-Unit in die Deklaration des Formulars einsetze. Dann erzeuge ich im constructor Create dieser Klasse die Panels. Ein Extra-Panel für den "rechten" Bereich (alClient) ist also nicht möglich, da zwischen den drei Panels beliebiges im Form-Konstruktor unbekanntes liegen kann. Funktioniert hat es übrigens, als nur das linke Panel in meiner eigenen Formularoberklasse erzeugt wurde, und Kopf und Fuß im Formular selber waren - da hatte es die volle Höhe. Nur habe ich diese natürlich im Zuge der Vereinheitlichung auch verschoben, identisch aussehende Panels überall einzeln zu haben ist ja auch nicht das wahre... Möglich ist es also, nur wie? Ein einfaches FPanelLeft.SetZOrder(true) aka BringToFront oder SetZOrder(false) aka SendToBack, auch mit folgendem Self.Realign bringt nichts. |
Re: Probleme mit Panel und Align
Versuch's mal so:
1. Linkes Panel mit Align = alLeft 2. Oberes Panel mit Anchors = [akLeft,akTop,akRight], Plazieren des Panels direkt neben das linke Panel 3. Wenn die Position von Komponenten auf dem oberen Panel in Abhängigkeit von dessen Breite geändert werden soll, dann das Ganze in der Resize-Prozedur der Elternkomponente erledigen |
Re: Probleme mit Panel und Align
An Anchors hatte ich auch für einen kurzen Moment gedacht, allerdings "blockt" das ganze ja nicht mehr. Die spezifischen Formulare haben aber meistens dann den "Hauptteil" des Fensters als Align = alClient, das würde dann überlappen.
Genauso wenig AlignWithMargins mit Margins.Left := 200 - dadurch wächst der linke Balken leider auch nicht auf die volle Höhe. Ein böser Workaround wäre, die Controls.pas zu bearbeiten; bei Delphi 2006 in Zeile 6408 ff. das DoAlign(alLeft); nach ganz oben zu setzen. Ich denke der Schlüssel ist, daß beim Laden durch TReader (also von Design-Time-Komponenten) noch etwas minimal anders ist. |
Re: Probleme mit Panel und Align
|
Re: Probleme mit Panel und Align
Vielen Dank für den Hinweis :)
Hatte das alCustom zwar mal gelesen, aber nicht weit genug gedacht; das Problem war dabei für mich, daß es eben nicht die der Klasse nicht bekannten "inneren" Elemente verschiebt. Aber wenn ich alle 4 Rahmenelemente (Statusleiste, Navigation links, Kopf oben, Fußkrams unten) per alCustom plaziere, kann ich in der Form per Self.Padding die Ränder entsprechend anpassen und visuell ist das Ergebnis das Richtige :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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