sizer refreshen?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Gremlin
User
Beiträge: 166
Registriert: Freitag 28. Mai 2010, 23:49

Ich hab mich mal an die sizer von wx rangemacht und komme damit schon ganz gut zurecht, aber jetzt hänge ich fest. Ich möchte einen sizer aktualisieren, nachdem ich ein Objekt verändert habe. Um genau zu sein, habe ich einen Eintrag zu einer Dropdown-Liste hinzugefügt und möchte nun, dass diese sich automatisch anpasst. Tut sie auch, aber erst wenn ich manuell die Größe des Fensters verändere.

Wie bewerkstellige ich es nun, dass sie sich in dem Moment anpasst, in dem der Eintrag hinzugefügt (oder gelöscht) wird?

Ich hab es mit
- sizer.Layout()
- sizer.Fit(window)
- sizer.FitInside(window)
- window.Refresh()
- window.SetSize(window.GetSize())
- window.SetClientSize(window.GetSize())
versucht, aber ohne Erfolg. (Bei letzterem hatte ich Erfolg, aber es war eben nicht die selbe Fenster-Größe wie vorher.)

Hab nun (vorerst) keine Lust mehr noch weiter in der Doku umher zu geistern und frag lieber euch, ob es da eine Funktion für gibt?

(Grad kommt mir die Idee ich könnte ja ein resize event auslösen... wär das was? :roll: )
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

normalerweise hilft hier immer .Layout()
Probier mal nicht sizer.Layout sondern sizer.Parent.Layout()
the more they change the more they stay the same
ntrunk
User
Beiträge: 83
Registriert: Sonntag 7. September 2008, 23:09
Wohnort: Buchen (Odenwald)

Hallo Gremlin,

welches Control benutzt du genau? Dropdown-Liste könnte ComboBox oder ListBox sein? Am Besten zeigst du mal ein Minimalbeispiel, das dein Problem demonstriert.

Gruß
Norbert
Gremlin
User
Beiträge: 166
Registriert: Freitag 28. Mai 2010, 23:49

Ich nutze wx.Choice. Aber das Problem ist gelöst. Ich bin davon ausgegangen, Layout() würde rekursiv funktionieren und hab den falschen sizer verwendet. :oops:
Aber danke für die Hilfe :D
Antworten