Spin Gadget triggert zweimal

Anfängerfragen zum Programmieren mit PureBasic.
Chregu
Beiträge: 16
Registriert: 22.12.2018 16:07
Wohnort: Viseu de Jos, Rumänien
Kontaktdaten:

Spin Gadget triggert zweimal

Beitrag von Chregu »

Mein erstes grösseres Projekt ist ein Adaptierung aus XProfan. Nur bei einem Spin-Gadget habe ich das Problem, dass das 2x triggert. Der relevante Code ist ab Zeile 155:

Code: Alles auswählen

Spin_1 = SpinGadget(#PB_Any, 150, 48, 120, 20, 0, 127, #PB_Spin_Numeric)
SetGadgetColor(Spin_1, #PB_Gadget_BackColor, RGB(255, 255, 255))
SetGadgetState(Spin_1, 0)
und Zeile 493:

Code: Alles auswählen

        Case Spin_1   ;Speed
          If #PB_EventType_Change
          Holen("XL" + GetGadgetText(Spin_0) + "," +
                GetGadgetText(Spin_1) + "," +
                Str(GetGadgetState(Checkbox_0)) + "," +
                Str(GetGadgetState(Option_0)) + "," +
                Str(GetGadgetState(Checkbox_1)) + "," +
                Str(GetGadgetState(Checkbox_2)) + "," +
                Str(GetGadgetState(Checkbox_3)) + "," +
                Str(GetGadgetState(Checkbox_4)))
          TextSchreiben(Editor_1, "Lok-Nummer: " +
                                  GetGadgetText(Spin_0) + ": Speed = " +
                                  GetGadgetText(Spin_1) + ", Dir = " +
                                  Str(GetGadgetState(Option_0)) + ", F01234 = " +
                                  Str(GetGadgetState(Checkbox_0)) +
                                  Str(GetGadgetState(Checkbox_1)) +
                                  Str(GetGadgetState(Checkbox_2)) +
                                  Str(GetGadgetState(Checkbox_3)) +
                                  Str(GetGadgetState(Checkbox_4)))
          
        EndIf
im File "MainWindow.pbi". Den ganze Sourcecode inkl. lauffähigem Programm findet man auf:
https://www.mikrocontroller.net/topic/467704
Leider habe ich das Konzept mit dem Form-Designer am Anfang nicht verstanden, darum ist auch individueller Code in der Form und damit nicht mehr im Designer editierbar.
Testhalber geht ein Minimalprogramm richtig:

Code: Alles auswählen

;GADGET IDs
#Spin0=0
;WINDOW ID
#Window1=0
Global zaehler.l

;WINDOW
OpenWindow(#Window1,243,130,280,131,"Spin",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Window1))

SpinGadget(#Spin0,20,16,100,24,0,10, #PB_Spin_Numeric)

;EVENT LOOP
Repeat
  EventID=WaitWindowEvent()
    Select EventID
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Spin0

            SetGadgetText(#Spin0,Str(GetGadgetState(#Spin0)))
            zaehler.l + 1
            Debug zaehler
            WindowEvent()

        EndSelect
    EndSelect
Until EventID=#PB_Event_CloseWindow

; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
Einen schönen Tag!
Gruss Chregu
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Spin Gadget triggert zweimal

Beitrag von Mijikai »

Also nach meinem Verständnis sollte WindowEvent() nicht nochmals innerhalb einer
Wait - /WindowEvent() Schleife aufgerufen werden.

Im Hauptcode sollte es:

Code: Alles auswählen

If EventType() = #PB_EventType_Change
anstelle von:

Code: Alles auswählen

If #PB_EventType_Change
sein!
Antworten