Seite 2 von 3
Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 15:16
von NicTheQuick
Nochmal: Das Problem liegt nicht an dem Gadget, sondern daran, dass dein erster Code oben ununterbrochen den Text im Gadget ändert und somit ein oder sogar mehrere Events ausgelöst werden. Und bevor diese Events abgearbeitet werden können, änderst du schon wieder den Text im Gadget. Damit fallen im schlechtesten Fall immer mehr Events an, bis die Eventqueue überläuft.
Wenn dir die anderen Ideen nicht gefallen, dann hätte ich noch diesen Vorschlag hier, der unter Linux einwandfrei und flimmerfrei funktioniert (aber trotzdem nicht das gelbe vom Ei ist):
Code: Alles auswählen
If OpenWindow(0, 0, 0, 470, 340, "ListViewFlimmern", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 10, 450, 320)
For a = 1 To 10
AddGadgetItem (0, -1, "irgendwas steht hier zur Demo")
Next
Repeat
Select WaitWindowEvent(0) ;WindowEvent() funktioniert genauso gut
Case #PB_Event_CloseWindow
Break
Case 0
; WICHTIG! Ändere den Text im Gadget nur, wenn sonst kein Event angekommen ist.
SetGadgetItemText(0, 9, "Jetzt flimmerts aber mächtig!")
EndSelect
ForEver
EndIf
Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 15:22
von ts-soft
7x7 hat geschrieben:ts-soft hat geschrieben:Niemals Code im EventLoop ausserhalb eines Events....
Grundsätzlich gebe ich dir natürlich Recht. Bei solchen Demo-Codes, die nur den Zweck haben etwas zu zeigen, sollte man einfach darüber hinwegsehen.
Finde ich nicht, da der Demo-Code unweigerlich zu flimmern führt. Das es da noch andere Gründe für das Flimmern gibt, ist ja
nochmal was anderes.
Gruß
Thomas
Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 15:42
von Nino
7x7 hat geschrieben:ts-soft hat geschrieben:Niemals Code im EventLoop ausserhalb eines Events....
Grundsätzlich gebe ich dir natürlich Recht. Bei solchen Demo-Codes, die nur den Zweck haben etwas zu zeigen, sollte man einfach darüber hinwegsehen.
Nö.
Solch falsch geschriebener Demo-Code ist schlicht nutzlos, da er nichts weiter aufzeigt als dass er selbst falsch geschrieben ist.

Verfasst: 16.01.2015 15:51
von CodeCommander
~ DELETE ~
Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 15:56
von NicTheQuick
CodeCommander hat geschrieben:@NickTheQuick: "dieses" Vorschlag?

Ich hab mich nur vertippt. Aber du hast so viele Fehler in deinem Post, dass ich sie nicht zählen will.

Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 16:02
von Kiffi
CodeCommander hat geschrieben:@Ni
ckTheQuick: "dieses" Vorschlag?

wer im Glashaus sitzt...
Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 19:48
von Nino
Kiffi hat geschrieben:CodeCommander hat geschrieben:@Ni
ckTheQuick: "dieses" Vorschlag?

wer im Glashaus sitzt...
Der hat das Glashaus, in dem er mal saß, schon längst kaputt geworfen ...
Jetzt sitzt er mit nacktem Hintern auf Eis und wirft weiter mit Steinen um sich in der Hoffnung, dass jemand kommt und 'ne warme Gummizelle um ihn herum baut.

Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 21:22
von Vera
Hi Nic,
füg' doch ma' folgendes in Dein Beispiel, denn ohne sieht man ja garnöscht, ob überhaupt watt passiert:
Code: Alles auswählen
Case 0
n + 1
; WICHTIG! Ändere den Text im Gadget nur, wenn sonst kein Event angekommen ist.
SetGadgetItemText(0, 9, "Jetzt flimmerts aber mächtig! - " + Str(n))
grüerzi

Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 21:28
von NicTheQuick
Vera hat geschrieben:Hi Nic,
füg' doch ma' folgendes in Dein Beispiel, denn ohne sieht man ja garnöscht, ob überhaupt watt passiert:
Code: Alles auswählen
Case 0
n + 1
; WICHTIG! Ändere den Text im Gadget nur, wenn sonst kein Event angekommen ist.
SetGadgetItemText(0, 9, "Jetzt flimmerts aber mächtig! - " + Str(n))
grüerzi

Hab ich gerade gemacht und es passiert das gewünschte. Deswegen weiß ich gerade nicht, was du mir damit sagen wolltest. Passiert bei dir nicht das gewünschte?
Re: ListViewGadget-Flimmern
Verfasst: 16.01.2015 21:37
von Vera
NicTheQuick hat geschrieben:Passiert bei dir nicht das gewünschte?
Mhh? -
ok, es flimmert nicht
... aber man sieht auch nicht, ob die Zeile überhaubt neu geschrieben wird. Mit Zähler kann man es gut erkennen.
