[R] Gérer simplement une double liste ( guicreatelist)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

[R] Gérer simplement une double liste ( guicreatelist)

#1

Message par sksbir »

Bonjour

Je voulais savoir si certains parmi vous ont trouvé des astuces pour faciliter la gestion d'une double liste comme celle-ci:
Image
Je parle de la partie basse de l'image : Soit à gauche une liste d’éléments, qu'on peut sélectionner ( choix multiple possible ) , puis on clique sur ==> pour les ajouter à droite ( et les retirer de gauche )
Quand on valide ( bouton "lancer" dans mon exemple) , on récupère la liste des éléments transférés à droite pour le traitement qui suit.
Pour la question ici, oubliez "monter" et "descendre" : les 2 listes sont triées, et on ne peut donc que déplacer les items d'une liste vers une autre.

voici leur déclaration:

Code : Tout sélectionner

$GUI_LISTESCHEMA = GUICtrlCreateList("", 378, 48 , 160, 132, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL, $WS_VSCROLL))
$GUI_LISTEVSCHEM = GUICtrlCreateList("", 600, 48 , 160, 132, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL, $WS_VSCROLL))
 
Bon, ya aussi les 2 boutons, avec 2 fonctions associées pour relire tout ce qui a été coché et le passer de l'autre coté.
Le soucis avec cette gestion, c'est que je n'ai pas trouvé de moyen simple de gérer les listes, car je n'ai pas trouvé le moyen de récupérer tout le contenu de ma liste ( et pas seulement les éléments cochés ).
Du coup, je suis obligé de conserver la liste initiale dans un tableau à 2 dimensions et d'y reporter chaque élément que je déplace de gauche à droite.
Exemple

Code : Tout sélectionner

dim $ITEMS[50][2]
;$ITEM[x][0]= texte de l'item x
;$ITEM[x][1]= bouléen : 1= validé ( présent à droite ), 0 = non validé ( présent à gauche)
Ce qui me permet de reconstruire à zéro les 2 listes à chaque fois qu'il faut rafraichir la GUI.

La question est donc précise ( à défaut d'être simple ) : existe t'il un moyen de gérer le contenu de mes 2 listes sans passer par un tableau externe ?


ps : la recherche est coquine sur le forum : voici la réponse texto : Aucun résultat trouvé pour le mot guicreatelist.
Modifié en dernier par sksbir le mer. 25 mai 2011 14:34, modifié 1 fois.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Gérer simplement une double liste ( guicreatelist)

#2

Message par ZDS »

Bonjour,

Pour la recherche, je pense qu'avec guictrlcreatelist tu as plus de chances (88 résultats trouvés).

Sinon pour les méthodes simples, je t'aurais conseillé de travailler sur une sorte de modèle MVC (cf http://fr.wikipedia.org/wiki/Mod%C3%A8l ... %C3%B4leur). C'est plus facile de travailler sur des arrays que sur des listes, non? ^^
A chaque listView tu associes un array. à chaque modification, tu appelles une fonction notify($listview1, $listview2, etc..., $list1, $list2, etc..., $flag) qui met tes $listviewX à jour en fonction des infos des $listX. Le flag peut être utile pour garder en sélection les éléments déjà sélectionnés (ou dans le cas de treeviews, garder les noeuds dépliés). Bref, essaye de modéliser au mieux un MVC, et tu n'auras aucun souci de coordination entre tes listViews.

Tu as une seconde solution, c'est d'associer des valeurs aux éléments (des valeurs invisibles) de ta listView. Quand tu crées tes éléments, associe-leur une valeur réelle et traitable : Exemple : à l'affichage, tu peux avoir "uno", "two", "trois" ou "vier", mais avec _GUICtrlListBox_SetItemData($list, $index, $value), à chacun tu peux y lier les valeurs 1, 2, 3 et 4.

Envoye moi un exemple (concis) de ton script et je te montrerai comment appliquer chaque méthode.

A bientôt !

PS: L'amalgame entre listView et ListBox est volontaire.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Gérer simplement une double liste ( guicreatelist)

#3

Message par sksbir »

ZDS a écrit :Bonjour,
Pour la recherche, je pense qu'avec guictrlcreatelist tu as plus de chances (88 résultats trouvés).
Sinon pour les méthodes simples, je t'aurais conseillé de travailler sur une sorte de modèle MVC (cf http://fr.wikipedia.org/wiki/Mod%C3%A8l ... %C3%B4leur). C'est plus facile de travailler sur des arrays que sur des listes, non? ^^
Pour la recherche : arghhhhh :mrgreen:

Pour la méthode, j'y ai bien pensé puisque c'est avec un array que je compte effectivement gérer le statut de mes 2 listes, et effectivement, il est très simple de rafraichir alors les listes à partir du tableau.
J'ai déja finalisé un script qui gère 2 listview , avec en plus la possibilité d'ajouter à droite "dans le désordre", et en plus la gestion d'un entete de groupe.

Mais là, j'ai un autre cas plus simple ( pas de désordre, pas d'entete ) En fait, je me demandais juste si il n'y avait pas une autre méthode, et il semblerait bien que non.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Gérer simplement une double liste ( guicreatelist)

#4

Message par ZDS »

Pour une méthode plus pratique, je pense pas effectivement. Intuitivement tu as utilisé un MVC et c'est le plus facile à maintenir. Imagine que tu veuilles remplacer tes deux listes par une matrice de deux colonnes, si tu as bien mis en place ton système, tu auras que la partie modélisation à modifier, quasiment rien sur l'interface graphique. Inversement si tu en as marre des listes, tu auras déjà la gestion de tes tableaux qui sera (quasiment) inchangée.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Gérer simplement une double liste ( guicreatelist)

#5

Message par sksbir »

okkk :D

On va appliquer ta devise : si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Gérer simplement une double liste ( guicreatelist)

#6

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [R] Gérer simplement une double liste ( guicreatelist)

#7

Message par sksbir »

Tlem a écrit :j'ai vu passé ça hier : http://www.autoitscript.com/forum/topic ... 25-may-11/
Merci pour le lien Tlem 8)

Effectivement, l'auteur semble avoir les mêmes préoccupations que moi, et semble également avoir suivi les préconisations de ZDS à propos de son analogie avec les MVC.
Répondre