[R] Gestion des entrées GUICtrlCreateList

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
bountykiller1er
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mer. 21 juil. 2010 16:13
Status : Hors ligne

[R] Gestion des entrées GUICtrlCreateList

#1

Message 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!
Modifié en dernier par bountykiller1er le jeu. 26 août 2010 10:34, modifié 1 fois.
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#2

Message 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
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
bountykiller1er
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mer. 21 juil. 2010 16:13
Status : Hors ligne

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

#3

Message 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?
bountykiller1er
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mer. 21 juil. 2010 16:13
Status : Hors ligne

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

#4

Message 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!
Répondre