Ich verzweifle an mir und Lazarus bei dynamischen Layouts.
Die Aufgabe:
Ich möchte 2x2 Panels, welche dynamisch den maximalen Raum der Form ausfüllen.
Jedes Panel enhält :
* eine Group-Box in der sich ein TDBEdit und ein Button horizontal angeordnet befinden.
* darunter ein TDBImage, welches mittels Stretch und Proportional ein Bild in den verfügbaren Raum einpasst.
Ich bin mir noch nicht sicher ob ich den Layout Algorithmus der LCL richtig verstanden habe. Daher berichte ich, was ich glaube verstanden zu haben und Ihr erklärt mir, was ich falsch verstanden habe.
* Die LCL arbeitet gewöhnlich beim autosizing von innen nach außen. Stelle ich bei einer Komponente autoSize auf True bedeutet dies, dass diese Komponente sich an den Dimensionen deren Inhalts orientiert.
* Weiterhin bietet die LCL die Möglichkeit von Außen nach innen vorzugehen über das ChildSizing. Hierbei werden Spielregeln vorgegeben, wie Unterkomponenten relativ zur Oberkomponente skaliert werden.
Die Strategie für mein Problem ist auch klar. Zunächst per Child-Sizing von außen die Größe der Subkomponenten ermitteln, dann in den Sub-Komponenten welche nun von Außen eine Größe zugewiesen bekommen haben, die Bilder per Stretch darstellen.
Das bedeutet, dass bei allen Komponenten auf jeder Ebene Autosize:=False sein muss. Sonst würde das Bild "ausbrechen" und seine Größe von Innen nach außen durchdrücken.
Damit sollten eigentlich alle Bausteine vorhanden sein um das gegebene Problem zu lösen. Wenn ich z.B: GroupBoxen 2x2 per child-Sizing in ein Panel packe ist alles prima. Ich bekomme vier Groupboxen, welche den verfügbaren Platz ausnutzen.

Sobald ich aber in eine der Group-Boxen einen Inhalt einfüge verändert sich das Layout:

Und das verstehe ich einfach nicht:
* GroupBox1 ist nicht autoSize=True, passt sich also nicht dem Inhalt an. Daher sollte GroupBox1 weiterhin bestimmt sein von der ChildSizing-Regel des umschließenden Panels.
Wenn so ein triviales Beispiel zu unvorhersehbarem Ergebnis führt, ist es kein Wunder, dass die kompliziertere Anforderung nicht erfüllt werden kann. Die Frage die sich mir stellt ist: Wo ist die Grenze zwischen Top-Down und Bottom-UP beim Algorithmus für das Layout.
Ich bastele an diesem Problem schon einige Tage und habe viel dazu gelesen. Aber trotzdem bekomme ich es ums verrecken nicht hin, selbst einfachste dynamische Layouts zu bauen. Sicher mache ich irgendwas grundlegendes falsch.
Beste Grüße
Volker