Je ne comprends pas le nature du problème, ni mon erreur de logique.
Je crée deux ListIconGadgets strictement semblables et je souhaite les mettre à jour de la même façon dans une boucle.
La boucle est infinie, l'action commandée par un interrupteur logique.
Lorsque je lance l'appli le premier gadget (dans l'ordre de la création) se met à jour mais pas le second. A l'interruption du process ( interrupteur #Flase, la boucle fonctionnant toujours) le second gadget se met seulement à jour alors qu'il n'est logiquement plus sollicité.
Si je change l'ordre de déclaration des gadgets, (dé-commenter ligne 42 et commenter ligne 47), c'est bien le second déclaré qui ne répond pas.
Pouvez- vous n'indiquer où est l'erreur dans la logique de mon code ?
Merci de vos lumières.
Code : Tout sélectionner
EnableExplicit
Declare Interrupteur()
Declare Approvisionner()
Declare IHM()
Global Flag_Inter.b
Global StokF.f = 5000, StokT.f =0
IHM()
Repeat:WindowEvent():Approvisionner(): Delay(1): ForEver
Procedure QuitFen()
End
EndProcedure
Procedure IHM()
Enumeration
#Fen
#MenuFen
#QuitFen
#Bt_Marche_Arret
#ListIcone1
#ListIcone2
#ProgrBar1
#ProgrBar2
EndEnumeration
Define Flg.i, Fht.i, PosX.i , PosY.i, Options.i, Titre.s
Flg.i = 600:Fht = 480 : PosX = 200: PosY = 200
Options = #PB_Window_SystemMenu|#PB_Window_BorderLess
Titre.s ="Fenêtre principale"
OpenWindow(#Fen,PosX,PosY,Flg,Fht,Titre,Options)
SetWindowColor(#Fen,$5F6638)
AddKeyboardShortcut(#Fen,#PB_Shortcut_Escape,4);Quitte l'appli avec Escape
CreateMenu(#MenuFen,WindowID(#Fen))
MenuTitle("Fichier")
MenuItem(4,"Quitter")
ButtonGadget(#QuitFen,Flg-140,Fht-70,120,30,"Quitter")
ButtonGadget(#Bt_Marche_Arret,Flg-500,Fht-70,120,30,"Marche / Arrêt")
; ListIconGadget(#ListIcone2,10,180,300,150,"Stock Transformateur",150)
ListIconGadget(#ListIcone1,10,10,300,150,"Stock Fournisseur",150)
AddGadgetColumn(#ListIcone1,1,"Quantité ",140)
AddGadgetItem(#ListIcone1,1,"Minerai fer"+Chr(10)+StrF(StokF,2))
ListIconGadget(#ListIcone2,10,180,300,150,"Stock Transformateur",150)
AddGadgetColumn(#ListIcone2,1,"Quantité ",140)
AddGadgetItem(#ListIcone2,0,"Minerai fer"+Chr(10)+StrF(StokT,2))
ProgressBarGadget(#ProgrBar1,320,10, 30,150,0,5000,#PB_ProgressBar_Vertical)
SetGadgetColor(#ProgrBar1,#PB_Gadget_FrontColor,$053D4C)
SetGadgetState(#ProgrBar1,StokF.f)
ProgressBarGadget(#ProgrBar2,320,180, 30,150,0,5000,#PB_ProgressBar_Vertical)
SetGadgetColor(#ProgrBar2,#PB_Gadget_FrontColor,$053D4C)
SetGadgetState(#ProgrBar2,StokT.f)
BindEvent(#PB_Event_CloseWindow,@QuitFen())
BindMenuEvent(#MenuFen,4,@QuitFen())
BindGadgetEvent(#QuitFen,@QuitFen())
BindGadgetEvent(#Bt_Marche_Arret,@Interrupteur())
EndProcedure
Procedure Interrupteur()
If Flag_Inter = 1 :Flag_Inter = 0 : Else :Flag_Inter = 1 : EndIf
EndProcedure
Procedure Approvisionner()
If Flag_Inter
StoKf-1
StokT+1
If StokT > 4999 : Flag_Inter =0 : EndIf
SetGadgetItemText(#ListIcone1,0,StrF(StokF,2),1) : SetGadgetState(#ProgrBar1,StokF)
SetGadgetItemText(#ListIcone2,0,StrF(StokT,2),1) : SetGadgetState(#ProgrBar2,StokT)
EndIf
EndProcedure