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

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#1

Message 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. :)
Modifié en dernier par franco le dim. 24 nov. 2013 10:16, modifié 1 fois.
L'entraide, c'est mon dada ;)
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

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

#2

Message 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
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#3

Message 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.


++
L'entraide, c'est mon dada ;)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

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

#4

Message 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.

++
L'entraide, c'est mon dada ;)
Répondre