Wenn du in einer Schleife ohne Thread die Gadgetwerte änderst, dann gibt es auch keine Fenster-Events und deshalb werden die Gadgets auch nicht neu gezeichnet.
Entweder lagerst du in einen Thread aus:
Code: Alles auswählen
EnableExplicit
Enumeration
#ContainerProgress
#ProgressBar
#ContainerProgressText_1
#ContainerProgressText_2
EndEnumeration
Procedure Thread(z)
Protected i
;For i = 0 To ArraySize(FileArray())-1
For i = 0 To 100
SetGadgetState(#ProgressBar, (i))
;SetGadgetText(#ContainerProgressText_1, FileArray(i))
SetGadgetText(#ContainerProgressText_1, Str(i))
SetGadgetText(#ContainerProgressText_2, "wird geladen")
Delay(100)
Next i
EndProcedure
If OpenWindow(0, 0, 0, 800, 600, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(#ContainerProgress, -1000, -1000, 460, 110, #PB_Container_Raised)
ProgressBarGadget(#ProgressBar, 20, 20, 420, 20, 0, 100, #PB_ProgressBar_Smooth)
TextGadget(#ContainerProgressText_1, 20, 50, 420, 20, "")
TextGadget(#ContainerProgressText_2, 20, 70, 420, 20, "")
CloseGadgetList()
ResizeGadget(#ContainerProgress, 100, 100, 460, 110)
CreateThread(@Thread(), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
(funktioniert nur unter Windows)
Oder du sorgst dafür, dass dein Fenster mit UpdateWindow_() neu gezeichnet wird:
Code: Alles auswählen
EnableExplicit
Define i
Enumeration
#ContainerProgress
#ProgressBar
#ContainerProgressText_1
#ContainerProgressText_2
EndEnumeration
If OpenWindow(0, 0, 0, 800, 600, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(#ContainerProgress, -1000, -1000, 460, 110, #PB_Container_Raised)
ProgressBarGadget(#ProgressBar, 20, 20, 420, 20, 0, 100, #PB_ProgressBar_Smooth)
TextGadget(#ContainerProgressText_1, 20, 50, 420, 20, "")
TextGadget(#ContainerProgressText_2, 20, 70, 420, 20, "")
CloseGadgetList()
ResizeGadget(#ContainerProgress, 100, 100, 460, 110)
;For i = 0 To ArraySize(FileArray())-1
For i = 0 To 100
SetGadgetState(#ProgressBar, (i))
;SetGadgetText(#ContainerProgressText_1, FileArray(i))
SetGadgetText(#ContainerProgressText_1, Str(i))
SetGadgetText(#ContainerProgressText_2, "wird geladen")
UpdateWindow_(WindowID(0))
Delay(100)
Next i
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
(funktioniert nur unter Windows)