Progressbar fortlaufend füllen

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
IB-Software
Beiträge: 57
Registriert: 29.08.2004 11:05
Computerausstattung: Windows 11
Wohnort: Berlin
Kontaktdaten:

Progressbar fortlaufend füllen

Beitrag 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.
PureBasic 5.73/6.04 Beta 2; Windows 11 Pro 64
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Progressbar fortlaufend füllen

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Progressbar fortlaufend füllen

Beitrag von mk-soft »

Schau mal hier...

Link: viewtopic.php?f=8&t=31528
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
IB-Software
Beiträge: 57
Registriert: 29.08.2004 11:05
Computerausstattung: Windows 11
Wohnort: Berlin
Kontaktdaten:

Re: Progressbar fortlaufend füllen

Beitrag von IB-Software »

Danke für die Hilfe, jetzt geht’s. :D
PureBasic 5.73/6.04 Beta 2; Windows 11 Pro 64
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Antworten