Page 1 sur 1

[R] Récuperation des valeurs d'une listview

Posté : mer. 12 juin 2013 13:32
par tomtomhonda
Bonjour;

Je cherche à récupérer les valeurs d'une multi selection sur une Listview:

Exemple:

ma listview est générer a partir d'in fichier texte, j'applique a ma listview les parametres suivants:

Code : Tout sélectionner

$ListView_Domain = GUICtrlCreateListView("", 2, 2, 394, 268,$LVS_REPORT, $LVS_SHOWSELALWAYS)
 
Ma listview est correctement généré avec la possibilité de selectionner plusieurs éléments mais mon probléme
suivient quand je désir récupérer l'ensemble des valeurs selectionées.

J'utilise la fonction guictrlread:

Code : Tout sélectionner

$Computer_name_Domain = StringReplace(GUICtrlRead(GUICtrlRead($ListView_Domain)), "|", "")
 
mais je n'arrive qu'a récupérer la premiere valeur.

Comment puis je récupérer toute les valeurs selectionné afin d'executer une tache sur l'ensemble des valeurs récupérer
comme avec un filereadline par exemple.

Merci d'avance

Re: [..] Récuperation des valeurs d'une listview

Posté : mer. 12 juin 2013 14:21
par mikell
Tu peux faire une boucle sur les items, vérifier s'ils sont sélectionnés et si oui récupérer le texte

Code : Tout sélectionner

$txt = ""
$count = ControlListView($gui, "", $listview, "GetItemCount")
For $i =  0 to $count-1
   If ControlListView($gui, "", $listview, "IsSelected", $i) Then 
       $txt &= ControlListView($gui, "", $listview, "GetText", $i) & @crlf
   EndIf
Next
Msgbox(0,"", $txt)

Re: [..] Récuperation des valeurs d'une listview

Posté : mer. 12 juin 2013 14:58
par tomtomhonda
Merci pour ton code

Mais il faudrais que sa m'affiche 1 msgbox par item et nom 1 msgbox
contenant tout les items selectionnés.

ainsi je pourrais executer l'action a chaque fois

exemple allumer les pcs selectionnée dans la listview

j'ai modifier ton code sa marche pour moi mais est que c'est propre :-)

Code : Tout sélectionner

            $txt = ""
            $count = ControlListView($gui, "", $ListView_Domain, "GetItemCount")
   For $i =  0 to $count-1
   If ControlListView($gui, "", $ListView_Domain, "IsSelected", $i) Then

   $txt &= ControlListView($gui, "", $ListView_Domain, "GetText", $i) & @crlf
   Msgbox(0,"", $txt)
   $txt = ""
   EndIf
next
 

Re: [..] Récuperation des valeurs d'une listview

Posté : mer. 12 juin 2013 19:07
par mikell
Pas tout à fait :mrgreen:
Si tu veux traiter les résultats un par un successivement tu n'as pas besoin de concaténer le texte

Code : Tout sélectionner

Local $txt
$count = ControlListView($gui, "", $ListView_Domain, "GetItemCount")
For $i =  0 to $count-1
   If ControlListView($gui, "", $ListView_Domain, "IsSelected", $i) Then
         $txt = ControlListView($gui, "", $ListView_Domain, "GetText", $i) & @crlf
         Msgbox(0,"", $txt)
   EndIf
Next

Re: [..] Récuperation des valeurs d'une listview

Posté : jeu. 13 juin 2013 13:04
par tomtomhonda
Bonjour en fait je veux pouvoir exécuter une autre boucle type while sur un fichier texte
si la chaine existe je fait l'action sinon je passe au suivant.
Le problème c'est qu'avec se script il traite la première boucle intégralement du coup sa ne pas.

Code : Tout sélectionner

Local $txt
$count = ControlListView($gui, "", $ListView_Domain, "GetItemCount")
For $i =  0 to $count-1
   If ControlListView($gui, "", $ListView_Domain, "IsSelected", $i) Then
         $txt = ControlListView($gui, "", $ListView_Domain, "GetText", $i) & @crlf
         Msgbox(0,"", $txt)
   EndIf
Next
 

ou puis je placer ma boucle while ?

genre

Code : Tout sélectionner

$file = fileopen(monfichier)

While 1
    Local $line = FileReadLine($file)
    (je recherche la chaine de caractére si elle existe je fait l'action)
    If @error = -1 Then ExitLoop
    WEnd
 

Re: [..] Récuperation des valeurs d'une listview

Posté : jeu. 13 juin 2013 14:28
par mikell
Là on est typiquement dans le cas où tu as intérêt à te créer une fonction perso dans laquelle tu peux mettre le 2ème traitement, exemple

Code : Tout sélectionner

Local $txt
$count = ControlListView($gui, "", $ListView_Domain, "GetItemCount")
For $i =  0 to $count-1
   If ControlListView($gui, "", $ListView_Domain, "IsSelected", $i) Then     ; si l'item est sélectionné
         $txt = ControlListView($gui, "", $ListView_Domain, "GetText", $i)     ; lit le texte de l'item
         _MaFonction($txt)      ; lance la fonction perso avec la valeur de $txt comme paramètre
   EndIf
Next

Func _MaFonction($str)
   Msgbox(0,"", $str)
EndFunc

Re: [..] Récuperation des valeurs d'une listview

Posté : jeu. 13 juin 2013 15:36
par tomtomhonda
Merci encore a toi je vois âprement le bout du tunnel je suis pas programmeur et je galère beaucoup.
J'ai quand même déjà prog en autoit mais je saisie pas tout car beaucoup de fonction.

Je te met mon bout de code test
âprement sa fonctionne j'attend de tester sur ma while :-)
► Afficher le texte

Re: [..] Récuperation des valeurs d'une listview

Posté : jeu. 13 juin 2013 16:54
par mikell
OK, n'oublie pas de mettre la balise [R] dans le titre de ton 1er post quand le pb aura été âprement résolu :wink: