Redraw Problem bei HideGadget?
Redraw Problem bei HideGadget?
Ist schön spät, deshalb fasse ich mich kurz.
Mir ist aber heute folgendes aufgefallen:
Habe ein PanelGadget auf welchem sich einige DateGadgets befinden.
Je nach Zustand sollen diese sichtbar, bzw. unsichtbar sein.
Zu Anfang des Programmes ist ein DategGadget nicht sichtbar, durch einen Klick soll es sichtbar werden. Das funktioniert auch.
Ein erneuter Klick soll es unsichtbar machen, aber tut es nicht.
Es ist noch da, aber nicht mehr anwählbar.
Schiebe ich das Fenster ausserhalb des Bildschirmes und wieder zurück, dann ist es wirklich weg.
Scheinbar liegt hier ein Redraw Problem vor. Aber wieso?
Denn wenn ich ohne PanelGadget (und ohne SetParent_) den HideGagdet Befehl benutze, dann funktioniert alles einwandfrei.
Vielleicht hat jemand eine Idee.
Gruß
Thomas
Mir ist aber heute folgendes aufgefallen:
Habe ein PanelGadget auf welchem sich einige DateGadgets befinden.
Je nach Zustand sollen diese sichtbar, bzw. unsichtbar sein.
Zu Anfang des Programmes ist ein DategGadget nicht sichtbar, durch einen Klick soll es sichtbar werden. Das funktioniert auch.
Ein erneuter Klick soll es unsichtbar machen, aber tut es nicht.
Es ist noch da, aber nicht mehr anwählbar.
Schiebe ich das Fenster ausserhalb des Bildschirmes und wieder zurück, dann ist es wirklich weg.
Scheinbar liegt hier ein Redraw Problem vor. Aber wieso?
Denn wenn ich ohne PanelGadget (und ohne SetParent_) den HideGagdet Befehl benutze, dann funktioniert alles einwandfrei.
Vielleicht hat jemand eine Idee.
Gruß
Thomas
Wir erzwingen einfach ein Window Redraw mittels WinAPI:
Setze das nach der Stelle, wo dein DateGadget auf unsichtbar geschaltet wird. Dann wird duch den API-Befehl das Fenster gezwungen sich neu zu zeichen und der DateGadget sollte dann nicht mehr sichtbar sein.
Greetz Laurin
Code: Alles auswählen
UpdateWindow_(WindowID())Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
Danke für die Antwort, aber leider funktioniert das nicht.
Es scheint auch nicht am DateGadget zu liegen, denn auch bei StringGadget funktioniert das nicht.
Es scheint mir so, das alles was auf einem PanelGadget liegt davon betroffen ist.
Mache ich was falsch, oder liegt es am HideGadget Befehl?
Gruß
Thomas
Es scheint auch nicht am DateGadget zu liegen, denn auch bei StringGadget funktioniert das nicht.
Es scheint mir so, das alles was auf einem PanelGadget liegt davon betroffen ist.
Mache ich was falsch, oder liegt es am HideGadget Befehl?
Gruß
Thomas
Merkwürdig, merkwürdig.
...
..
.
Erleuchtung!
Probiere mal folgendes:
1) HideGadget()
2) Schalte das PanelGadget auf eine andere Seite mit SetGadgetState()
3) Schalte wieder zu ursprünglichen Seite
Fertig!
Jetzt müsste alles eigendlich richtig angezeigt werden. Die Lösung ist zwar nicht elegant, aber hoffentlich funktioniert es.
Greetz Laurin
...
..
.
Erleuchtung!
Probiere mal folgendes:
1) HideGadget()
2) Schalte das PanelGadget auf eine andere Seite mit SetGadgetState()
3) Schalte wieder zu ursprünglichen Seite
Fertig!
Jetzt müsste alles eigendlich richtig angezeigt werden. Die Lösung ist zwar nicht elegant, aber hoffentlich funktioniert es.
Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
Ja das funktioniert natürlich, aber sieht nicht so toll aus.
So kann ich das in keinem Fall lassen.
Das mit dem SetParent_ habe ich nun herausgenommen, da es eh nicht mehr benötigt wird.
Aktuell ist es, dass das Gadget bei einem HideGadget(#Gadget,0) zwar erscheint, aber bei einem HideGadget(#Gadget,1) nicht wieder verschwindet)
Ist echt merkwürdig.
So kann ich das in keinem Fall lassen.
Das mit dem SetParent_ habe ich nun herausgenommen, da es eh nicht mehr benötigt wird.
Aktuell ist es, dass das Gadget bei einem HideGadget(#Gadget,0) zwar erscheint, aber bei einem HideGadget(#Gadget,1) nicht wieder verschwindet)
Ist echt merkwürdig.
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Code: Alles auswählen
;Der Redrawtip kommt von GPI
;http://www.robsite.de/php/pureboard-archiv/viewtopic.php?t=3836&highlight=resize
#DM_REPOSITION = (#WM_USER+2)
If OpenWindow(0,0,0,672,250,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"PanelGadget") And CreateGadgetList(WindowID(0))
PWnd=PanelGadget (0,8,20,646,223)
AddGadgetItem (0,-1,"Panel 1")
ButtonGadget(4,0,0,80, 15, "Button")
CalendarGadget(1, 10, 15, 200, 180)
CalendarGadget(2, 220, 15, 200, 180)
CalendarGadget(3, 430, 15, 200, 180)
CloseGadgetList()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadgetID()=4
If button = #True ; ButtonGadget wird angezeigt
HideGadget(1,0) ; => verstecke es
button = #False
Else ; ButtonGadget ist versteckt
HideGadget(1,1) ; => zeige es
button = #True
EndIf
EndIf
RedrawWindow_(WindowID(), 0, 0,#RDW_INTERNALPAINT|#RDW_INVALIDATE|#RDW_ALLCHILDREN)
EndIf
Until Event=#PB_Event_CloseWindow
EndIf 