Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Panles und deren Alignments (https://www.delphipraxis.net/159968-panles-und-deren-alignments.html)

Jazzman_Marburg 20. Apr 2011 17:45

Panles und deren Alignments
 
Hallo zusammen,
ich habe mir gerade einen Wolf zu diesem Thema gesucht und eine Mange Fragen dazu gefunden, aber mit den Antworten kam ich nicht ganz klar:
Auf einer Form habe ich zwei Panels. Panel A hat Align := alLeft. Das Align von Panel B setze ich auf alBottom. Das Problem ist nun, dass sich das Panel B mal unter das Panel A und mal über das Panel A schiebt und die komplette Breite der Form einnimmt -- statt wie gewünscht bis zum Panel A zu gehen.

Steckt da irgendeine Logik dahinter? Sowas wie eine Z-Order, die bestimmt, wie weit sich das Alignment auswirkt?
Main Problem ist, dass ich schwören könnte, es mal so hinbekommen zu haben -- nun aber seit 2 Stunden erfolglos im Objektinspektor rumfummle.
Die Anchors könnten vielleicht helfen -- aber deren Wirkung ist mir auch eher schleierhaft.
Ich möchte zunächst kein drittes Panel benutzen -- es muß doch eine Möglichkeit geben, dem Panel B zu sagen, "Dein alBottom geht nur bis zum Panel A" -- ohne unten oder oben drüber.

Habt ihr wohl eine Idee?

Lieben Dank & Gruß
Jazzman

borncrush 20. Apr 2011 17:47

AW: Panles und deren Alignments
 
Bin mir grad unsicher, aber ich meine es gibt irgendwo eine CreationOrder.

Edit:
Doch nicht :(. Zwar gibt es sowas, aber diese bezieht sich auf non-visual-comp..

shmia 20. Apr 2011 18:23

AW: Panles und deren Alignments
 
allgemeine (goldene) Regeln für Property Align

Du kannst grundsätzlich nur 2 Panels (oder andere Controls) auf einem Parent korrekt platzieren.
Eines der beiden Controls muss Align=alClient und das andere muss alLeft, alTop, alRight, alBottom haben.
Das bedeutet, ein Control klebt an linken,oberen, rechten oder unteren Rand während das andere Control sich der restlichen Fläche des Formulars anpasst.
Rein logisch und geometrisch muss das so sein!!!
Also für dein Beispiel:
Panel A Align := alLeft
Panel B Align := alClient


Damit man das Flächenverhältnis der beiden Controls frei ändern kann, empfiehlt es sich einen Splitter zwischen die beiden Controls zu setzen.
Ich setze die Farbe eines Splitters immer auf clBlue und die Breite bzw. Höhe auf 4 Pixel, damit man den Splitter gut sieht und leicht "greifen" kann.

Bei 3 und mehr Panels
Es gelten die Regeln von oben; d.h. man muss Panel A und B wiederum auf einem eigenen Hilfs-Panel AB platzieren, damit man diese zusammen mit Panel C platzieren kann.
Sollte man auf die Idee kommen wie folgt zu platzieren:
Panel A Align := alTop
Panel B Align := alTop
Panel C Align := alClient

dann können sich die Positionen von Panel A und B unkontrolliert ändern.
Man braucht also immer Hilfpanel (oder unsichtbare Panels) um alles richtig zu machen.

Jazzman_Marburg 20. Apr 2011 18:55

AW: Panles und deren Alignments
 
Zitat:

Zitat von shmia (Beitrag 1096270)
allgemeine (goldene) Regeln für Property Align...

Sau stark!
Diese Regeln kann sogar ich mir merken -- und die Suche nach einer anderen Lösung hat eine Ende.

Vielen, vielen Dank! :thumb:

Gruß
Jazzman

Hawkeye219 20. Apr 2011 19:42

AW: Panles und deren Alignments
 
Hallo,

mit Delphi 6 wurden die Align-Möglichkeiten erweitert: alCustom. Wenn man ein Element mit dieser Ausrichtung kennzeichnet, wird beim übergeordneten Element das Ereignis Delphi-Referenz durchsuchenOnAlignPosition ausgelöst. Dort kann man Position und Größe des Kind-Elements anpassen.

Steve Trefethen hat ein Demo-Programm erstellt, das die Verwendung erklärt.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz