ich habe in mein derzeitiges Programm den LayoutManager eingebunden mit der Layoutalign Variable in jedem Xbase Part. Da ich nicht für jedes Untermenü einen neuen Xbpdialog kreieren möchte, tue ich bei jedem Funktionsaufruf die Aktuelle Oberfläche in einer deleteChild() Funktion löschen.
Code: Alles auswählen
FUNCTION deleteChild(aChildMenue)
local aChild:= {}, nCounter
aChild := aChildMenue
nCounter := len(aChild)
FOR i := 1 to nCounter
oDlg:drawingArea:delChild(aChild[i])
NEXT i
Es fehlt also eine Möglichkeit den Xbase Parts sich automatisch der geänderten Fenstergröße anzupassen, sie reagieren erst auf das Layoutalign wenn man das Fenster zu alten größe Verschiebt (die oDlg:minSize:= {1024,768})
Ich habe jetzt mehrere Möglichkeiten ausprobiert um das Problem zu umgehen:
1. einen Layoutmanager anzulegen mit oDlg:LayoutManager:= LayoutManager:New() und oDlg:LayoutManager:addChild() die Xbase Parts hinzuzufügen und nach jedem deleteChild(aChildMenue) aufruf
Code: Alles auswählen
oDlg:LayoutManager:recompute()
2. für jedes neue Maske im Programm eine neuen XbpDialog. Allerdings wird dann auch nicht die alte größe des Fensters übernommen.
wie habt ihr es mit Variablen Fenster und dem LayoutManager gelöst? Ich fände es sinnlos für jedes neue Untermenü im Programm ein neues Fenster kreieren zu müssen. Temporär habe ich ein oDlg:maxSize eingeführt damit das Fenster sich nicht weiter verschieben kann.
Eine Überlegung wäre alle Masken vorher zu Zeichnen und die Xbase Parts mit einem visible:= T. Sichtbar zu machen.
Vielen Dank im voraus für eure Antworten!
Ali