Page 1 sur 1

[R] Gestion des entrées GUICtrlCreateList

Posté : lun. 26 juil. 2010 10:58
par bountykiller1er
Bonjour,

Je suis débutant sur autoit.

Je souhaiterai créé une GUI avec une Liste (GUICtrlCreateList) générant des logs avec leur status.
Je m'explique, plusieurs tâches de fond sont exécutées, et pour chaque tâche, un contrôle y est attaché.
Avant l'exécution de la tâche, une chaine de caractère est envoyée à la liste du type :
"Tâche 1 > en cours" (ligne 1)
Lorsque la tâche 1 est terminé, un contrôle scripté est exécuté, et selon son retour, une autre chaine de caractère est envoyée à la liste du type :
"Tâche 1 > ok/nok" (ligne 1)
En gros je veux que ma (GUICtrlCreateList) affiche 1 tâche par ligne qui soit remplacée (écrasée) par chaque novuel état.

"Tâche 1 > en cours" remplacée par "Tâche 1 > ok" (ligne 1)
"Tâche 2 > en cours" remplacée par "Tâche 2 > ok" (ligne 2)
"Tâche 3 > en cours" remplacée par "Tâche 3 > ok" (ligne 3)
... ainsi de suite ...

Voici une partie de mon code :
► Afficher le texte
Mais il ne fonctionne pas très bien :(

Merci d'avance pour votre aide!

Re: [..] Gestion des entrées GUICtrlCreateList

Posté : lun. 26 juil. 2010 19:55
par SagePourpre
Voilà quelque chose de plus fonctionnel.
Il n'y a qu'un seul problème, le bouton arrêter ne peut être activer pendant la boucle
d'opérations (Il faut utiliser la touche Escape pour annuler la progression) .
► Afficher le texte

Re: [..] Gestion des entrées GUICtrlCreateList

Posté : lun. 09 août 2010 23:18
par bountykiller1er
Bonjour,

Merci SagePourpre pour ta réponse, ton post m'a un peu aidé à avancer, même s'il ne solutionne pas la question de base.

J'ai donc essayé d'avancer de mon coté, et j'ai utilisé la : "Listview", avec 2 colonnes.
Une première colonne pour l'étape, et la seconde pour l'état de celle-ci.

Cependant, je n'ai pas trouvé comment la faire fonctionner comme je le souhaite.
Je souhaiterai, mettre dans la colonne "status", l'état "en cours", pendant l'exécution du traitement.
J'ai pour le moment mis celui-ci dans un "label", en haut de ma GUI.

Voici un extrait de mon code que j'ai remanié/compressé!
► Afficher le texte
Comme me le disait SagePourpre, n'existe t'il pas un moyen pour que le bouton arrêter puisse stopper complètement la procédure en cours?

Re: [..] Gestion des entrées GUICtrlCreateList

Posté : jeu. 26 août 2010 09:59
par bountykiller1er
On ne m'a pas beaucoup aidé, c'est bien dommage.
Ou peut être ma question était-elle mal posée et peu compréhensible?

Cependant, j'ai solutionné mon problème tout seul comme un grand :

Code : Tout sélectionner


FUNC _itemstart($x)
    $item=GUICtrlCreateListViewItem($x, $listview)
    _GUICtrlListView_ClickItem($ListView, _GUICtrlListView_GetItemCount($ListView) - 1)
    return $item
ENDFUNC

Func _itemadd($percent,$ret, $item1)
    
    GUICtrlSetData($Progress1 , $percent)
    _GUICtrlStatusBar_SetText($StatusBar1, "Etat d'avancement: "&$percent&"%")
    if $ret = 0 Then
        GUICtrlSetData($item1,"|OK")
    ElseIf $ret = 1 Then
        GUICtrlSetData($item1,"|ERR")
    Elseif  $ret = 2 Then
        GUICtrlSetData($item1,"|En cours")
    Else    
        GUICtrlSetData($item1,"|-")
    EndIf
    _GUICtrlListView_ClickItem($ListView, _GUICtrlListView_GetItemCount($ListView) - 1)
EndFunc

 
J'ai créé 2 fonctions, La première me permet d'envoyer le titre de la tâche en cours dans la première colonne de mon listview. Elle me renvoi la ligne ajouté que je pourrai ensuite modifié dans ma deuxième fonction.
La deuxième fonction (qui est en faite une procédure) me permet de contrôler et de modifier "l'état" (qui correspond à ma deuxième colonne).
A chaque appel de celle-ci selon le paramètre envoyé modifiera l'item contenu dans cette même ligne.

J'ai ainsi 4 état disponible : En cours, Ok, Err et -.

J'espère avoir été un peu clair :P

A bientôt!