Ich habe eine Form mit drei Hauptkomponenten:Wie verhindere ich, dass zwei nach unten gerichtete Steuerelemente von der umgekehrten Reihenfolge abweichen?
- A Flow die
- Ein zweiter Flow zum Client Richten eingestellt ist auf Bottom
- A StatusBar Satz Bottom ausrichten auszurichten.
Alles beginnt gut aussieht. Das FlowPanel, das nach unten ausgerichtet ist, wird jedoch ebenfalls auf AutoSize gesetzt. Es enthält ein Panel, das sich selbst zusammenklappen kann. Das interne Panel enthält zusammenfassende Informationen, die der Benutzer ausblenden kann. Dies verringert die Größe des FlowPanels auf eine sehr kleine Größe, ist jedoch nicht vollständig verschwunden. Es gibt immer noch eine Schaltfläche, über die der Benutzer das Übersichtsfenster erneut erweitern kann.
Das Problem tritt auf, wenn das Panel wieder expandiert wird und das FlowPanel wächst. Zu diesem Zeitpunkt ist die Reihenfolge der Statusleiste und des FlowPanels umgekehrt. Sie sind immer noch so eingestellt, dass sie unten liegen, aber jetzt ist die Statusleiste oberhalb meines FlowPanels.
Ich kann dies in einer Test-App ohne das Collapsing-Panel duplizieren, indem Sie einfach die Schaltfläche auf das Formular setzen, um die Höhe des unteren Flow-Panels zu sehen. Wenn die Höhe erhöht wird, ändert sich die Reihenfolge. Wenn es verringert wird, bleibt alles in der gleichen Reihenfolge. Der einzige Code in meiner Testform ist:
FlowPanel2.Height := FlowPanel2.Height * 2;
ich auch diese getestet mit der Bodenplatte eine regelmäßige TPanel anstelle einem Flow mit den gleichen Ergebnissen zu sein.
Irgendwelche Ideen, warum dies geschieht und wie man es verhindert?
Eine ziemlich bekannte und irritierende Quirck von Ausrichtung und Autosize-Interaktion. Fügen Sie eine OnResize-Ereignisbehandlungsroutine hinzu, in der Sie den oberen Rand der Statusleiste auf die Höhe des Containers + 1 oder die obere + Höhe des Bedienfelds festlegen, dem es folgen soll. (Blick auf LOLCats, also ein Kommentar und keine Antwort). –
@Mark: Hey, du hast ** meinen ** Hut auf!:-P –