Page 1 sur 1

[R] Intégrer ProgressBar dans la principale interface GUI

Posté : sam. 23 nov. 2013 11:58
par franco
Bonjour.

J'ai un petit souci de barre de progression.
J'ai déjà lu et relu les multiples sujets, lié à ce sujet.

Mais je suis bloqué, et je n'ai pas trouvé ce que je souhaiterai faire.

Une barre de progression indépendante (une autre GUI), je sais le faire.

Comme ceci :
► Afficher le textecode n°1
J'utilise ceci :

Code : Tout sélectionner

$BarreProgression = GUICreate("", 620, 35, @DesktopWidth / 2 - 275, 170, $WS_POPUPWINDOW + $WS_CLIPSIBLINGS)
        $Progress = GUICtrlCreateProgress(10, 10, 600, 15, $PBS_MARQUEE)
        GUICtrlSendMsg($Progress, 0x0400 + 10, 1, Number(30)) ; on envoie la ProgressBar
        GUISetState(@SW_SHOW)

        $ar_Array = _FileListToArrayNT(GUICtrlRead($iDir), "*" & GUICtrlRead($iSearch) & "*", 1, 2, True)

        $Result = UBound($ar_Array) - 1
        For $i = 1 To $Result
            If Not @error Then
                FileWriteLine($ReportFile, $ar_Array[$i])
            EndIf
        Next
        FileClose($ReportFile)
        GUIDelete($BarreProgression)
Je me suis dis qu'au lieu d'ouvrir dans une autre interface, pourquoi ne pas la mettre dans l'interface principale.

J'ai donc ensuite créé ce script :
► Afficher le textecode n°2
Et j'utilise ceci :

Code : Tout sélectionner

$Progress = GUICtrlCreateProgress(10, 125, 600, 15, $PBS_MARQUEE)

GUISetState(@SW_SHOW)
Et

Code : Tout sélectionner

        $msgProgress = GUICtrlSendMsg($Progress, 0x0400 + 10, 1, Number(30)) ; on envoie la ProgressBar


        $ar_Array = _FileListToArrayNT7(GUICtrlRead($iDir), "*" & GUICtrlRead($iSearch) & "*", 1, 2, True)

        $Result = UBound($ar_Array) - 1
        For $i = 1 To $Result
            If Not @error Then
                FileWriteLine($ReportFile, $ar_Array[$i])
            EndIf
        Next
        FileClose($ReportFile)
        GUICtrlSetState($msgProgress, @SW_HIDE) ;;; Comment arrêter le défilement de la barre de progression ? Là, cela ne fonctionne pas.
Donc, je me suis posé cette question :
Est-ce possible, cette façon de faire une barre de progression, comme je viens de le faire ?

Car si je ne peux pas arrêter le défilement, c'est bête :mrgreen:

Juste que, dans le code n°1, si je veux quitter le script, je ne peux pas.
Mais dans le code n°2, je peux. :D


Pouvez-vous m'éclairer ?
Merci à tous. :)

Re: [..] Intégrer ProgressBar dans la principale interface G

Posté : dim. 24 nov. 2013 00:52
par parazitenew
Je n'ai pas pu tester ton script car tu utilises une biblio que je n'ai pas, si tu veux juste arrêter la barre de progression dans le code n°2 tu peux utiliser ceci:

Code : Tout sélectionner

GuiCtrlSetData($Progress,0)
Pour mettre la barre à 0%

T'as mis:

Code : Tout sélectionner

GUICtrlSetState($msgProgress, @SW_HIDE)
Ce qui pour moi est faux car tu essayes de cacher une variable qui représente l'envoie d'un message, et non pas la barre elle même.

La barre c'est $Progress et non $msgProgress

Re: [..] Intégrer ProgressBar dans la principale interface G

Posté : dim. 24 nov. 2013 09:42
par franco
Coucou ;)
parazitenew a écrit :Je n'ai pas pu tester ton script car tu utilises une biblio que je n'ai pas, si tu veux juste arrêter la barre de progression dans le code n°2 tu peux utiliser ceci:

Code : Tout sélectionner

GuiCtrlSetData($Progress,0)
Pour mettre la barre à 0%
Merci bien, je vais tester ;)
parazitenew a écrit :T'as mis:

Code : Tout sélectionner

GUICtrlSetState($msgProgress, @SW_HIDE)
Ce qui pour moi est faux car tu essayes de cacher une variable qui représente l'envoie d'un message, et non pas la barre elle même.

La barre c'est $Progress et non $msgProgress
Maintenant, je comprends que mon "GuiCtrlSetData" ne fonctionnait pas, si je me trompe de "contrôle" :oops: :mrgreen:

J'ai tout testé... avec le mauvais contrôle :lol:

En tout cas, merci de ta réponse.
Je reviens répondre dès que possible.


++

Re: [..] Intégrer ProgressBar dans la principale interface G

Posté : dim. 24 nov. 2013 10:14
par franco
Re ;)

Ton GuiCtrlSetData($Progress,0) n'a pas fonctionné...

Voici ce que tu m'as dis :

Code : Tout sélectionner

GUICtrlSetState($msgProgress, @SW_HIDE)
Ce qui pour moi est faux car tu essayes de cacher une variable qui représente l'envoie d'un message
Et cela m'a fait TILT 8)

Au lieu d'effacer l'intérieur de la barre, autant la supprimer.

Du coup :
j'insère la barre quand j'appuie sur la bouton pour rechercher ce que j'ai indiqué : j'ai donc déplacé dans la fonction cette ligne :

Code : Tout sélectionner

$Progress = GUICtrlCreateProgress(10, 125, 600, 15, $PBS_MARQUEE)
A la fin de la recherche (à la fin donc de la boucle For ... next), je met GuiCtrlDelete($Progress)

Et cela fonctionne !

Voilà, tu m'as donné une sacrée piste :wink:
Merci.

Voici le code fonctionnel :
► Afficher le textecode fonctionnel
Je vais enfin pouvoir intégrer la barre dans un autre script.

Donc un grand merci !

Je vais mettre en résolu.

++