Fehler bei disable SpinGadget ?

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Fehler bei disable SpinGadget ?

Beitrag von c4s »

Hi!
Also ich habe das treiben hier schon öfters wegen vielen Fragen mitverfolgt und immer Antworten gefunden :allright:

Doch folgenden Fehler kann ich mir nicht erklären:

Code: Alles auswählen

Enumeration 
	#Window
	#Check1
	#Test11
	#Test12
	#Check2
	#Test21
	#Test22
	#OnOff
	#Exit
EndEnumeration


If OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 331, 120, "Refresh Test", #PB_Window_TitleBar | #PB_Window_ScreenCentered)
	If CreateGadgetList(WindowID(#Window))
		CheckBoxGadget(#Check1, 50, 17, 25, 20, "1")
		 SetGadgetState(#Check1, 1)
		SpinGadget(#Test11, 165, 18, 35, 17, 1, 999, #PB_Spin_Numeric)
		 SetGadgetState(#Test11, 11)
		SpinGadget(#Test12, 235, 18, 40, 17, 1, 9999, #PB_Spin_Numeric)
		 SetGadgetState(#Test12, 12)
		CheckBoxGadget(#Check2, 50, 37, 25, 20, "2")
		 SetGadgetState(#Check2, 1)
		SpinGadget(#Test21, 165, 38, 35, 17, 1, 999, #PB_Spin_Numeric)
		 SetGadgetState(#Test21, 21)
		SpinGadget(#Test22, 235, 38, 40, 17, 1, 9999, #PB_Spin_Numeric)
		 SetGadgetState(#Test22, 22)
		CheckBoxGadget(#OnOff, 50, 90, 90, 20, "redraw on / off")
		ButtonGadget(#Exit, 210, 90, 50, 20, "exit")
	EndIf
EndIf



Repeat
	Select WaitWindowEvent()
		Case #PB_Event_Gadget
			Select EventGadget()
				Case #Check1, #Check2
					If GetGadgetState(#OnOff)
						RedrawWindow_(WindowID(#Window), #False, #False, #WM_PAINT)
					EndIf
					
					If GetGadgetState(#Check1)
						DisableGadget(#Test11, 0)
						DisableGadget(#Test12, 0)
					Else
						DisableGadget(#Test11, 1)
						DisableGadget(#Test12, 1)
					EndIf
					If GetGadgetState(#Check2)
						DisableGadget(#Test21, 0)
						DisableGadget(#Test22, 0)
					Else
						DisableGadget(#Test21, 1)
						DisableGadget(#Test22, 1)
					EndIf
				Case #Exit
					End
			EndSelect
	EndSelect
ForEver
Wenn ich ein SpinGadget mit DisableGadget 'ergrauen' will, wird nur das Nummernfeld grau. Die Pfeile bleiben in ihrem Zustand bis die Maus über sie kommt.
Bisher hab ich das Problem immer durch ein WindowRedraw gelöst aber mit vielen Gadgets in einem Fenster gibt das nerviges und auffallendes Flimmern.

Ich hoffe einer kann mir helfen...

P.S.
Hätte ich das in den Anfängerbereich tun sollen?
Zuletzt geändert von c4s am 20.09.2007 15:23, insgesamt 1-mal geändert.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

eher in den BugBereich

ohne redraw werden die Pfeilchen bei mir (xp sp2) aber
auch nicht grau sondern bleiben schwarz (was mich aber
eigentlich auch nicht weiter stört)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Das Problem ist ja, dass wenn man (ohne redraw) ein SpinGadget disabled, in ihrem jetzigem Zustand bleiben.
Also wenn es deaktiviert ist und ich mit der Maus über ein Pfeil fahre wird er dann auch grau. Aktiviere ichs wieder bleibt es grau und wenn ich dann erst wieder mit der Maus über einem Pfeil bin wird er wieder schwarz!

(Wenn er immer in einer Farbe blieben würde, wäre es ja für mich nicht so schlimm aber so gehts einfach nicht :| )

edit:
ich hab vergessen zu sagen, dass der Bug mit XP-Skin-Unterstützung noch schlimmer ist und das eigenltiche Problem ist!
Zuletzt geändert von c4s am 20.09.2007 16:24, insgesamt 1-mal geändert.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Sollte wirklich in den Bug Bereich...

*wink* an Moderator

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Ehrlich gesagt dachte ich, dass irgendwie ein WindowEvent falsch gesetzt oder iwas anderes falsch gemacht habe.
Aber das es ein echter Bug ist - bei dem mir keiner helfen kann - dachte ich eher weniger :shock:

Weiß wenigstens einer wie man nur ein Gadget redrawt?
Irgendeiner meinte ich mal man muss nur bei RedrawWindow die WindowID durch die GadgetID ersetzten. Aber das funktioniert nicht...

Ich freue mich auf jede Antwort :wink:
mfg c4s
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Mir ist noch was interessantes aufgefallen:
Manchmal, wenn ich redraw deaktiviere, wird das erste PanelGadget korrekt
geupdated nur beim zweiten bleiben dann die Pfeile in ihrem aktiven bzw deaktivierten Status bis man - wie geschrieben - mit der Muas über sie fährt.

Bringt das irgend jemanden auf eine Idee wie man das Problem, ohne das ganze Fenster aktualisieren zu müssen, lösen kann?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Irgendeiner meinte ich mal man muss nur bei RedrawWindow die WindowID durch die GadgetID ersetzten. Aber das funktioniert nicht..
Natürlich funktioniert das. Das SpinGadget setzt sich aber aus mehreren Elementen zusammen. Einmal ein UpDown-Control und ein Edit-Control. Du muss also das handle des UpDown-Controls ermitteln. Zum Beispiel mit GetWindow_().
Windows 10 Pro, 64-Bit / Outtakes | Derek
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Danke Fluid Byte, danke danke danke :allright:
Anfangs dachte ich: "Was schreibt der fürn zeuch?"

Aber hab es jetzt hinbekommen:
InvalidateRect_(GetWindow_(GadgetID(#SpinGadget), #GW_HWNDNEXT), 0, #True)

edit
wobei eins muss ich jetzt noch verstehen:
Wie man #GW_HWNDPREV, #GW_HWNDNEXT, #GW_HWNDLAST richtig setzt :?
iwie wird gerade nur eins richtig aktualisiert...

edit2
mit #GW_HWNDNEXT scheints richtig zu funktionieren
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten