Page 1 sur 1
[R] Exporter Listview vers array mais en conditionnel
Posté : jeu. 13 juin 2013 18:11
par eric
Bonjour,
Je souhaite exporter une partie d'une Listview dans un array à plusieurs dimensions.
Par exemple pour cette listview :
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GuiListView.au3>
$gui = GUICreate("Titre", 750, 630, 20, 20, $WS_THICKFRAME + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX)
$listview = GUICtrlCreateListView("nom|prenom|classe", 10, 10, 730, 450, $LVS_SINGLESEL, $LVS_EX_REGIONAL + $LVS_EX_FULLROWSELECT + $LVS_EX_GRIDLINES)
GUICtrlCreateListViewItem("Durand|didier|2013", $listview)
GUICtrlCreateListViewItem("Dupont|laurent|2012", $listview)
GUICtrlCreateListViewItem("Roland|antoine|2012", $listview)
GUICtrlCreateListViewItem("Henri|françois|2013", $listview)
GUICtrlCreateListViewItem("Bertrand|robert|2013", $listview)
GUISetState(@SW_SHOW, $gui)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Je souhaiterais exporter dans l'array toutes les lignes dont la classe est 2013.
Pour obtenir un array de type :
$array [0] [0] = "Durand"
$array [0] [1] = "didier"
$array [0] [2] = "2013"
$array [1] [0] = "Henri"
$array [1] [1] = "François"
$array [1] [2] = "2013"
J'ai beau chercher avec une boucle For, je n'arrive pas à trouver le moyen d'obtenir cet array avec uniquement les informations voulus.
Comment procéder ?
Merci
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : jeu. 13 juin 2013 19:23
par mikell
Ouala
Méthode très souple, pour pouvoir donner la forme qu'on veut à l'array de sortie
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GuiListView.au3>
#Include <Array.au3>
$gui = GUICreate("Titre", 750, 630, 20, 20, $WS_THICKFRAME + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX)
$listview = GUICtrlCreateListView("nom|prenom|classe", 10, 10, 730, 450, $LVS_SINGLESEL, $LVS_EX_REGIONAL + $LVS_EX_FULLROWSELECT + $LVS_EX_GRIDLINES)
GUICtrlCreateListViewItem("Durand|didier|2013", $listview)
GUICtrlCreateListViewItem("Dupont|laurent|2012", $listview)
GUICtrlCreateListViewItem("Roland|antoine|2012", $listview)
GUICtrlCreateListViewItem("Henri|françois|2013", $listview)
GUICtrlCreateListViewItem("Bertrand|robert|2013", $listview)
GUISetState(@SW_SHOW, $gui)
Dim $array[1][3]
$count = ControlListView($gui, "", $listview, "GetItemCount")
For $i = 0 To $count-1
$date = ControlListView($gui, "", $listview, "GetText", $i, 2)
If $date = "2013" Then
$n = UBound($array)
Redim $array[$n+1][3]
$array[$n][0] = $date
$array[$n][1] = ControlListView($gui, "", $listview, "GetText", $i, 0)
$array[$n][2] = ControlListView($gui, "", $listview, "GetText", $i, 1)
$array[0][0] += 1
EndIf
Next
_ArrayDisplay($array)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : ven. 14 juin 2013 10:44
par eric
Bonjour Mikell,
Merci pour ce bout de code.
Je vais le tester
Je ne connaissais pas la fonction Redim et effectivement ça aide.
Par contre je ne sais pas ce que signifie la ligne $array[0][0] += 1
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : ven. 14 juin 2013 10:57
par PandiPanda
Bonjour,
La ligne "$array[0][0] += 1" est un raccourci de "$array[0][0] = $array[0][0] +1" qui permet donc l'incrémentation.
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : ven. 14 juin 2013 11:24
par eric
Compris
Merci PandiPanda
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : ven. 14 juin 2013 12:20
par eric
Autre question dans la foulée.
Je souhaiterais exporter les 2013 dans un array et les 2012 dans un autre array.
Y a til une autre méthode plus courte que de déclarer deux variables et de répéter deux fois la boucle comme ci dessous ?
Merci
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GuiListView.au3>
#Include <Array.au3>
$gui = GUICreate("Titre", 750, 630, 20, 20, $WS_THICKFRAME + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX)
$listview = GUICtrlCreateListView("nom|prenom|classe", 10, 10, 730, 450, $LVS_SINGLESEL, $LVS_EX_REGIONAL + $LVS_EX_FULLROWSELECT + $LVS_EX_GRIDLINES)
GUICtrlCreateListViewItem("Durand|didier|2013", $listview)
GUICtrlCreateListViewItem("Dupont|laurent|2012", $listview)
GUICtrlCreateListViewItem("Roland|antoine|2012", $listview)
GUICtrlCreateListViewItem("Henri|françois|2013", $listview)
GUICtrlCreateListViewItem("Bertrand|robert|2013", $listview)
GUISetState(@SW_SHOW, $gui)
Dim $array2013[1][3]
Dim $array2012[1][3]
$count = ControlListView($gui, "", $listview, "GetItemCount")
For $i = 0 To $count-1
$date = ControlListView($gui, "", $listview, "GetText", $i, 2)
Select
case $date = "2013"
$n = UBound($array2013)
Redim $array2013[$n+1][3]
$array2013[$n][0] = $date
$array2013[$n][1] = ControlListView($gui, "", $listview, "GetText", $i, 0)
$array2013[$n][2] = ControlListView($gui, "", $listview, "GetText", $i, 1)
$array2013[0][0] += 1
Case $date = "2012"
$n = UBound($array2012)
Redim $array2012[$n+1][3]
$array2012[$n][0] = $date
$array2012[$n][1] = ControlListView($gui, "", $listview, "GetText", $i, 0)
$array2012[$n][2] = ControlListView($gui, "", $listview, "GetText", $i, 1)
$array2012[0][0] += 1
EndSelect
Next
_ArrayDisplay($array2013)
_ArrayDisplay($array2012)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : ven. 14 juin 2013 13:53
par mikell
C'est plus une question d'optimisation que de méthode, faut faire une fonction
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GuiListView.au3>
#Include <Array.au3>
$gui = GUICreate("Titre", 750, 630, 20, 20, $WS_THICKFRAME + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX)
$listview = GUICtrlCreateListView("nom|prenom|classe", 10, 10, 730, 450, $LVS_SINGLESEL, $LVS_EX_REGIONAL + $LVS_EX_FULLROWSELECT + $LVS_EX_GRIDLINES)
GUICtrlCreateListViewItem("Durand|didier|2013", $listview)
GUICtrlCreateListViewItem("Dupont|laurent|2012", $listview)
GUICtrlCreateListViewItem("Roland|antoine|2012", $listview)
GUICtrlCreateListViewItem("Henri|françois|2013", $listview)
GUICtrlCreateListViewItem("Bertrand|robert|2013", $listview)
GUISetState(@SW_SHOW, $gui)
$array2013 = _List("2013")
_ArrayDisplay($array2013)
$array2012 = _List("2012")
_ArrayDisplay($array2012)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Func _List($date)
Local $array[1][3]
$count = ControlListView($gui, "", $listview, "GetItemCount")
For $i = 0 To $count-1
If ControlListView($gui, "", $listview, "GetText", $i, 2) = $date Then
$n = UBound($array)
Redim $array[$n+1][3]
$array[$n][0] = $date
$array[$n][1] = ControlListView($gui, "", $listview, "GetText", $i, 0)
$array[$n][2] = ControlListView($gui, "", $listview, "GetText", $i, 1)
$array[0][0] += 1
EndIf
Next
Return $array
EndFunc
Re: [..] Exporter Listview vers array mais en conditionnel
Posté : ven. 14 juin 2013 17:21
par eric
Ok, merci mikell