Problem mit SpinGadGet
Problem mit SpinGadGet
Hallo,
ich habe folgendes Problem, vielleicht kann mir jemand helfen:
ich habe ein SpinGadget() erstellt.
über WaitWindowEvent() warte ich bis das entsprechende Ereignis eintritt.
wenn ich den "Spinzähler" betätige und das Event eintritt mache ich folgendes:
Sp3.l = GetGadgetState(#Spin_2)
..... hier weiterverarbeitung von Sp3 .....
SetGadgetText(#Spin_2,RSet(Str(Sp3),4,"0")) ; um sp3 4 stellig anzuzeigen
Nun stört mich folgendes:
Im Spinfenster erscheint ein blinkender Cursor und (ich vermute aus diesem Grund) es wird immer
wieder ein Spin-Ereignis erkannt und WaitWindowEvent() wird immer wieder ausgelöst.
Wie könnte ich das Problem beheben?
Vielen Dank für Eure Hilfen und alles Gute von Jürgen....
ich habe folgendes Problem, vielleicht kann mir jemand helfen:
ich habe ein SpinGadget() erstellt.
über WaitWindowEvent() warte ich bis das entsprechende Ereignis eintritt.
wenn ich den "Spinzähler" betätige und das Event eintritt mache ich folgendes:
Sp3.l = GetGadgetState(#Spin_2)
..... hier weiterverarbeitung von Sp3 .....
SetGadgetText(#Spin_2,RSet(Str(Sp3),4,"0")) ; um sp3 4 stellig anzuzeigen
Nun stört mich folgendes:
Im Spinfenster erscheint ein blinkender Cursor und (ich vermute aus diesem Grund) es wird immer
wieder ein Spin-Ereignis erkannt und WaitWindowEvent() wird immer wieder ausgelöst.
Wie könnte ich das Problem beheben?
Vielen Dank für Eure Hilfen und alles Gute von Jürgen....
Hast du mal in der Hilfe geschaut?
Code: Alles auswählen
If OpenWindow(0,0,0,140,70,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"SpinGadget") And CreateGadgetList(WindowID(0))
SpinGadget (0,20,20,100,25,0,1000)
SetGadgetState (0,5) : SetGadgetText(0,"5") ; Anfangswert festlegen
Repeat
Event = WaitWindowEvent()
If EventGadgetID() = 0
SetGadgetText(0,Str(GetGadgetState(0)))
WindowEvent() ; absolut notwendig, um Endlos-Schleifen zu vermeiden
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
Vielen Dank Batze für die Antwort.
Für Green Snake noch ein Auszug aus dem Code
Ich habe wohl das WindowEvent() vergessen, klar....
Aber wenn nun noch der Cursor in dem Fenster wegzubekommen wäre...?
Vielen Dank für die Hilfen
Für Green Snake noch ein Auszug aus dem Code
Code: Alles auswählen
Repeat
Event3 = WaitWindowEvent() ; warte bis ein Ereignis eintritt
If Event3 = #PB_EventGadget
GadgetID3 = EventGadgetID() ; GadgetID mit der Ereignisvariablen laden
Select GadgetID3
Case #Button_11 ; Taste Beenden gedrückt ?
quit1.w = 1
Case #Spin_2
Sp3.l = GetGadgetState(#Spin_2)
EndSelect
Until quit1 = 1
Aber wenn nun noch der Cursor in dem Fenster wegzubekommen wäre...?
Vielen Dank für die Hilfen
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
Hallo Green Snake,
tja, ist ne schwierige Sache, werde mal noch etwas im Codearchiv suchen, vielleicht finde ich etwas.
Mit dem vorgeschlagenen Code geht es auch nicht!
auch finde ich in der Hilfe zu WaitWindowEvent() bzw. WindowEvent() keinen Hinweis das
WindowEvent() so wichtig wäre.
Wenn ich das Beispielprogramm von Batzke aufrufe funktioniert zwar alles aber mit CallDebugger
kann man schnell feststellen, dass der blinkende Cursor auch ein WindowEvent() erzeugt.
mit Debug event sieht man das im Fenster. Sowie sich im Fenster was ändert, z.b. der Mauszeiger wird
auf dem Fenster bewegt oder eben der Cursor blinkt, ergibt sich ein WindowEvent() !!!
ich habe in meiner Huptschleife 3 SpinGadget() und wähle sie mit Select aus (neben anderen
Gadgets) aber Wenn in einem Spingadget der Cursor blinkt, wird das eben jedesmal als
Event gewertet. Da hilft auch kein Befehl WindowEvent()
Jetzt habe ich ein zusätzliches Spingadget eingerichtet was ich eigentlich nicht benötige,
jedesmal Wenn nun ein entsprechends Spingadget Event auftritt führe ich die Befehle aus und
greife dann auf das zus. Spingadget zurück. Da es dafür keine Case Auswahl werden dann auch
nicht die Befehle für das zuletzt angesprochene Spingadget dauernd ausgeführt.
aber vielleicht geht es auch einfacher.... ??
alles Gute und viel Spass mit PureBasic wünscht Jürgen...
tja, ist ne schwierige Sache, werde mal noch etwas im Codearchiv suchen, vielleicht finde ich etwas.
Mit dem vorgeschlagenen Code geht es auch nicht!
auch finde ich in der Hilfe zu WaitWindowEvent() bzw. WindowEvent() keinen Hinweis das
WindowEvent() so wichtig wäre.
Wenn ich das Beispielprogramm von Batzke aufrufe funktioniert zwar alles aber mit CallDebugger
kann man schnell feststellen, dass der blinkende Cursor auch ein WindowEvent() erzeugt.
mit Debug event sieht man das im Fenster. Sowie sich im Fenster was ändert, z.b. der Mauszeiger wird
auf dem Fenster bewegt oder eben der Cursor blinkt, ergibt sich ein WindowEvent() !!!
ich habe in meiner Huptschleife 3 SpinGadget() und wähle sie mit Select aus (neben anderen
Gadgets) aber Wenn in einem Spingadget der Cursor blinkt, wird das eben jedesmal als
Event gewertet. Da hilft auch kein Befehl WindowEvent()
Jetzt habe ich ein zusätzliches Spingadget eingerichtet was ich eigentlich nicht benötige,
jedesmal Wenn nun ein entsprechends Spingadget Event auftritt führe ich die Befehle aus und
greife dann auf das zus. Spingadget zurück. Da es dafür keine Case Auswahl werden dann auch
nicht die Befehle für das zuletzt angesprochene Spingadget dauernd ausgeführt.
aber vielleicht geht es auch einfacher.... ??
alles Gute und viel Spass mit PureBasic wünscht Jürgen...
Bin jetzt auf folgendem Wege....:
vielleicht hat auch jemand ne bessere Idee....
Alles Gute von Jürgen...
Code: Alles auswählen
If OpenWindow(0,0,0,270,215,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"") And CreateGadgetList(WindowID(0))
StringGadget(0,10,30,50,20,"111")
ButtonGadget(1,65,22,15,15,"+")
ButtonGadget(2,65,42,15,15,"-")
Repeat
Event3 = WaitWindowEvent() ; warte bis ein Ereignis eintritt
If Event3 = #PB_EventGadget
GadgetID3 = EventGadgetID() ; GadgetID mit der Ereignisvariablen laden
Select GadgetID3
Case 1
a.s = GetGadgetText(0)
b.l = Val(a)
b = b + 1
SetGadgetText(0,Str(b))
Case 2
a.s = GetGadgetText(0)
b.l = Val(a)
b = b - 1
SetGadgetText(0,Str(b))
EndSelect
EndIf
Until Event3 = #PB_Event_CloseWindow Or b > 140
EndIf
vielleicht hat auch jemand ne bessere Idee....
Alles Gute von Jürgen...
- sharkpeter
- Beiträge: 474
- Registriert: 29.08.2004 16:18
- Wohnort: Dresden
- Kontaktdaten:
Hallo Jürgen,
hatte/habe ein ähnliches Problem, schau doch mal hier:
http://www.winbahn.de/Programme/PureBas ... Example.pb
vielleicht hilft es dir.
Gruß Jens
hatte/habe ein ähnliches Problem, schau doch mal hier:
http://www.winbahn.de/Programme/PureBas ... Example.pb
vielleicht hilft es dir.
Gruß Jens
PB3.94 bis 6.xx / (Win98/98SE/ME/XPProSP3/WINVista-X32)/WIN7HP-X64/WIN8PRO-X32/WIN10-64
Nichts wissen macht nichts, sich dumm stellen aber schon.
Nichts wissen macht nichts, sich dumm stellen aber schon.