J'ai eu besoin d'une ProgresseBarre un peu sympa. alors je me suis fait ceci pour ne pas y revenir a chaque fois.
C'est certainement perfectible, alors n’hésitez pas.
Code : Tout sélectionner
;MLD 27/04/2017
;PB5.62
#pg1 = 1:#pg2 = 2:#pg3 = 3:#pg4 = 4
Procedure avancepbar(gad,color_face,color_ombre,Pc.d,sens.b);sens normal 0 inverse 1
StartDrawing(CanvasOutput(gad))
DrawingMode(#PB_2DDrawing_Gradient)
FrontColor(color_face)
BackColor(color_ombre)
If GadgetHeight(gad)< GadgetWidth(gad)
LinearGradient(0,GadgetHeight(gad),0,0)
If sens <> 0
largPc.d = (GadgetWidth(gad)-GadgetWidth(gad)*Pc)/100
Box(GadgetWidth(gad),0,largPc.d-2,GadgetWidth(gad) ,color_face)
Else
largPc.d = (GadgetWidth(gad)*Pc)/100
Box(0,0,largPc.d,GadgetWidth(gad) ,color_face)
EndIf
Else
LinearGradient(0,GadgetWidth(gad),GadgetWidth(gad),GadgetWidth(gad))
If sens <> 0
hautpc.d = (GadgetHeight(gad)-GadgetHeight(gad)*Pc)/100
Box(0,GadgetHeight(gad),GadgetWidth(gad),hautpc.d,color_face)
Else
hautpc.d =(GadgetHeight(gad)*Pc)/100
Box(0,0,GadgetWidth(gad),hautpc.d,color_face)
EndIf
EndIf
StopDrawing()
EndProcedure
Procedure progbar3d(gad,X.d,Y.d,larg.d,haut.d,coulfond.d,cadre.b);pour cadre 1,si non 0
If cadre = 1
CanvasGadget(gad,X,Y,larg,haut, #PB_Canvas_Border)
Else
CanvasGadget(gad,X,Y,larg,haut)
EndIf
StartDrawing(CanvasOutput(gad))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,larg,Haut,coulfond)
StopDrawing()
EndProcedure
Procedure demo()
Static Pc1,Pc2,Pc3,Pc4
pc1 = pc1 + 1
pc2 = pc2 + 2
pc3 = pc3 + 1
pc4 = pc4 + 4
avancepbar(1,$7E04E5,$44007E,Pc1,0)
avancepbar(2,$CB9B79,$6F5C4F,Pc2,1)
avancepbar(3,$A1E623,$5C6A42,Pc3,1)
avancepbar(4,$1BF3FF,$167175,Pc4,0)
If Pc1 = 100:progbar3d(1,10,20,200,25,$BEBEBE,1):pc1 = 0:EndIf
If Pc2 = 100:progbar3d(2,10,80,280,25,$BEBEBE,0) :Pc2 = 0:EndIf
If Pc3 = 100:progbar3d(3,50,120,25,100,$BEBEBE,0):Pc3 = 0:EndIf
If Pc4 = 100:progbar3d(4,225,120,25,100,$BEBEBE,0):Pc4 = 0:EndIf
EndProcedure
OpenWindow(0, 0, 0, 300, 250, "Progressbar1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
AddWindowTimer(0, 1, 100)
progbar3d(1,10,20,200,25,$BEBEBE,1)
;avancepbar(1,$7E04E5,$44007E,Pc1,0)
progbar3d(2,10,80,280,25,$BEBEBE,0)
;avancepbar(2,$CB9B79,$6F5C4F,Pc2,1)
progbar3d(3,50,120,25,100,$BEBEBE,0)
;avancepbar(3,$A1E623,$5C6A42,Pc3,1)
progbar3d(4,225,120,25,100,$BEBEBE,0)
;avancepbar(4,$1BF3FF,$167175,Pc4,0)
BindEvent(#PB_Event_Timer,@demo())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
End