Seite 1 von 1

Progressbar fortlaufend füllen

Verfasst: 02.07.2019 21:44
von IB-Software
Ich will eine Progressbar fortlaufend füllen.
Unter Windows gab diesbezüglich bisher keine Probleme.

Code: Alles auswählen

OpenWindow(0, 150,150,800,100, "Hauptfenster", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
ButtonGadget(11, 600, 25, 80, 50, "Start")
ProgressBarGadget(10, 50, 30, 520, 30, 0, 1000)
Repeat
  Event = WindowEvent()
  If event = #PB_Event_CloseWindow
    End
  EndIf
  If Event=#PB_Event_Gadget 
    Select EventGadget() 
      Case 11
        a= 0
        SetGadgetState(10, a)
        While a <> 1001
          SetGadgetState(10, a)
          a = a + 1
          Debug a
          Delay(10)
        Wend
    EndSelect 
  EndIf 
Until quit
Der Code macht unter Windows was ich erwarte.

Auf dem Mac füllt sich die Progressbar nicht, sondern bleibt leer. Erst am Ende zeigt sie mit einem Schlag 100% an.

Re: Progressbar fortlaufend füllen

Verfasst: 02.07.2019 22:11
von RSBasic
Da in der Eventschleife eine separate Schleife zum Füllen benutzt wird, kann erst nach Beendigung dieser Schleife das nächste Event (WaitWindowEvent()) ermittelt und ausgewertet werden.
Es ist auch unter Windows nicht empfehlenswert, so die ProgressBar zu füllen, weil das Fenster während des Füllvorgangs nicht reagiert. (Keine Rückmeldung der Ereignisverarbeitung)
Hast du schon mit Timer versucht?
Das sollte auch unter MacOS funktionieren:

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ProgressBarGadget(1, 10, 10, 370, 20, 0, 1000, 0)
  ButtonGadget(2, 390, 10, 100, 20, "Start", 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 2
            AddWindowTimer(0, 1, 10)
            Debug "Start"
        EndSelect
      Case #PB_Event_Timer
        Select EventTimer()
          Case 1
            SetGadgetState(1, GetGadgetState(1)+1)
            If GetGadgetState(1) = 1000
              RemoveWindowTimer(0, 1)
              Debug "Ende"
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: Progressbar fortlaufend füllen

Verfasst: 03.07.2019 10:06
von mk-soft
Schau mal hier...

Link: viewtopic.php?f=8&t=31528

Re: Progressbar fortlaufend füllen

Verfasst: 03.07.2019 16:25
von IB-Software
Danke für die Hilfe, jetzt geht’s. :D