SizeWindow und Spaltenbreiten bei vielen ListIcons

Für allgemeine Fragen zur Programmierung mit PureBasic.
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

SizeWindow und Spaltenbreiten bei vielen ListIcons

Beitrag von Andesdaf »

Hallo,

ich habe mit der Dialog-Lib viele ContainerGadgets angelegt, die alle übereinander liegen und bei Bedarf angezeigt werden.
Diese Container enthalten jeweils auch Gadgets, darunter einige ListIconGadgets. Deren Spaltenbreiten möchte ich
abhängig von der eigentlichen Gadgetbreite skalieren.

Seit einiger Zeit soll ja der bevorzugte Weg für die Reaktion auf Size-Events BindEvent() sein anstatt der herkömmlichen Behandlung
in der Eventschleife. Das funktioniert beim normalen Resizen (Fenster am Rahmen anfassen und größer ziehen) auch ganz gut,
allerdings: sobald ich das Fenster maximiere bzw. aus dem maximierten Zustand wiederherstelle, scheint der Callback über BindEvent()
"zu schnell" zu sein, d.h. GadgetWidth() rechnet immer noch mit den Werten vor der Größenänderung und demzufolge werden auch
die Spaltenbreiten falsch berechnet.

Stelle ich von BindEvent() wieder auf die herkömmliche Behandlung innerhalb der Eventschleife um, funktioniert das Resizen bei Maximieren
wieder, allerdings flackert das ganze Fenster beim "größerziehen" dann fürchterlich.

Mit einem kleinen Testcode konnte ich das Verhalten nicht nachstellen, daher gehe ich davon aus, dass die Probleme im Zusammenspiel
von Dialog-Lib und der großen Anzahl von Gadgets/ListIcons entstehen.

Hat vielleicht trotzdem jemand eine Idee, wie ich auch beim Maximieren/Wiederherstellen den gewünschten Effekt erziele?
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SizeWindow und Spaltenbreiten bei vielen ListIcons

Beitrag von RSBasic »

Andesdaf hat geschrieben:allerdings: sobald ich das Fenster maximiere bzw. aus dem maximierten Zustand wiederherstelle, scheint der Callback über BindEvent() "zu schnell" zu sein, d.h. GadgetWidth() rechnet immer noch mit den Werten vor der Größenänderung und demzufolge werden auch
die Spaltenbreiten falsch berechnet.
Prüfst du mit BindEvent nur auf #PB_Event_SizeWindow oder auch auf #PB_Event_MaximizeWindow und #PB_Event_RestoreWindow?
Oder werden die Events #PB_Event_MaximizeWindow und #PB_Event_RestoreWindow ebenfalls "zu früh" ausgewertet?
Und hast du schon mit #PB_Event_Repaint ausprobiert?

Ansonsten kannst du versuchen, nach dem #PB_Event_MaximizeWindow-Event ein PostEvent auszuführen, um ein bestimmtes Event erneut auszulösen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: SizeWindow und Spaltenbreiten bei vielen ListIcons

Beitrag von Andesdaf »

Ja, ich reagiere auch auf Maximize und Restore. Repaint habe ich versucht, das zerstört mir aber anscheinend
die übereinanderliegenden Container und ein darunter liegender Container "scheint durch".

Das mit dem Extra-Event ist eine gute Idee, das schau ich mir mal an.
Win11 x64 | PB 6.00 (x64)
Antworten