PureBoard
http://forums.purebasic.com/german/

Progressbar fortlaufend füllen
http://forums.purebasic.com/german/viewtopic.php?f=28&t=31559
Seite 1 von 1

Autor:  IB-Software [ 02.07.2019 21:44 ]
Betreff des Beitrags:  Progressbar fortlaufend füllen

Ich will eine Progressbar fortlaufend füllen.
Unter Windows gab diesbezüglich bisher keine Probleme.

Code:
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.

Autor:  RSBasic [ 02.07.2019 22:11 ]
Betreff des Beitrags:  Re: Progressbar fortlaufend füllen

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:
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

Autor:  mk-soft [ 03.07.2019 10:06 ]
Betreff des Beitrags:  Re: Progressbar fortlaufend füllen

Schau mal hier...

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

Autor:  IB-Software [ 03.07.2019 16:25 ]
Betreff des Beitrags:  Re: Progressbar fortlaufend füllen

Danke für die Hilfe, jetzt geht’s. :D

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/