PureBasic

Forums PureBasic
Nous sommes le Ven 19/Juil/2019 11:26

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: Compatibilité de deux ListIconGadgets dans une même boucle
MessagePosté: Lun 13/Mai/2019 15:25 
Hors ligne

Inscription: Lun 06/Avr/2009 20:08
Messages: 6
Bonjour,

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


PB 5.70 LTS W7


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Compatibilité de deux ListIconGadgets dans une même bouc
MessagePosté: Lun 13/Mai/2019 15:37 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1579
C'est un classique du GadgetList qui n'est rafraîchi que dans certains cas.
Force la régénération de l'affichage de la liste 2 en ajoutant une boucle vide ligne 74
While WindowEvent() : Wend
Code:
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)
        While WindowEvent() : Wend ; <--- Forcer le régénération de l'affichage de la liste
    EndIf
EndProcedure

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Compatibilité de deux ListIconGadgets dans une même bouc
MessagePosté: Lun 13/Mai/2019 16:06 
Hors ligne

Inscription: Lun 06/Avr/2009 20:08
Messages: 6
Bonjour Marc56,

Merci de votre réponse. Le forçage du rafraichissement fonctionne bien.
Je n'ai donc pas d'erreur dans la logique de mon code.
Comme vous dites que c'est un classique du GadgetList, que OpenGadgetlist() est devenu obsolète, mais pas CloseGadgetList(), je prends l'astuce pour mon bréviaire!

Je m’aperçois que je me suis planté avec les balises du code, la prochaine fois...!

Cordialement


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Compatibilité de deux ListIconGadgets dans une même bouc
MessagePosté: Lun 13/Mai/2019 18:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8703
Bonjour F6LYON.
J'ai édité ton post pour remettre les balises codes correctements.
Le plus simple est de mettre ton code en surbrillance et de cliquer sur la balise code plutôt de l'écrire manuellement. ça évite les erreurs ;)

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Compatibilité de deux ListIconGadgets dans une même bouc
MessagePosté: Lun 13/Mai/2019 19:52 
Hors ligne

Inscription: Lun 06/Avr/2009 20:08
Messages: 6
Bonsoir,

Merci Ar-s.
Cela a vraiment plus bel aspect.Je n'avais pas mis le code en surbrillance, ...
"forcement ça marche moins bien" (André bourvil). C'est moi "le corniaud" :wink:

Cordialement


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Compatibilité de deux ListIconGadgets dans une même bouc
MessagePosté: Mar 14/Mai/2019 16:51 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1579
Citation:
Comme vous dites que c'est un classique du GadgetList, que OpenGadgetlist() est devenu obsolète, mais pas CloseGadgetList(),
Pas tout à fait: c'est CreateGadgetList qui est déprécié, car la GadgetList est créée implicitement par OpenWindow()

OpenGadgetList() quant à lui est toujours présent et est utilisé pour les gadgets qui en contiennent d'autres:

- ContainerGadget()
- PanelGadget()
- ScrollAreaGadget()

Il permet d'ajouter d'autres gadget dynamiquement dans une des listes.

https://www.purebasic.com/french/documentation/gadget/opengadgetlist.html

Les Gadgets dépréciés sont listés dans l'aide en anglais, mais pas dans celle en français.
https://www.purebasic.com/documentation/gadget/index.html

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Majestic-12 [Bot] et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye