ListViewGadget-Flimmern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ListViewGadget-Flimmern

Beitrag 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 
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ListViewGadget-Flimmern

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: ListViewGadget-Flimmern

Beitrag 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. :mrgreen:
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:56, insgesamt 1-mal geändert.
~ DELETE ~
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ListViewGadget-Flimmern

Beitrag von NicTheQuick »

CodeCommander hat geschrieben:@NickTheQuick: "dieses" Vorschlag? :D
Ich hab mich nur vertippt. Aber du hast so viele Fehler in deinem Post, dass ich sie nicht zählen will. :wink:
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ListViewGadget-Flimmern

Beitrag von Kiffi »

CodeCommander hat geschrieben:@NickTheQuick: "dieses" Vorschlag? :D
wer im Glashaus sitzt...
a²+b²=mc²
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: ListViewGadget-Flimmern

Beitrag von Nino »

Kiffi hat geschrieben:
CodeCommander hat geschrieben:@NickTheQuick: "dieses" Vorschlag? :D
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. :lol:
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: ListViewGadget-Flimmern

Beitrag 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 :wink:
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ListViewGadget-Flimmern

Beitrag 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 :wink:
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?
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: ListViewGadget-Flimmern

Beitrag von Vera »

NicTheQuick hat geschrieben:Passiert bei dir nicht das gewünschte?
Mhh? - ok, es flimmert nicht :allright:

... aber man sieht auch nicht, ob die Zeile überhaubt neu geschrieben wird. Mit Zähler kann man es gut erkennen. :)
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten