Page 1 sur 1

[R] Sélections multiples dans une listview

Posté : mar. 28 avr. 2009 23:46
par val25
Bonjour,

J'ai créé une listeview à sélection multiple mais je ne parviens pas à récupérer le contenu des items de ma sélection. Voici mon code :

Code : Tout sélectionner

$Lst_Stations = GUICtrlCreateListView("Col1|Col2|Col3|Col4|Col5|Col6|Col7", 16, 104, 412, 266, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS, $WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
 
Je passe sur l'ajout des items car pas de problème de ce coté là, ma liste est bien remplie.
Maintenant je veux récupérer le contenu de ma sélection.

Code : Tout sélectionner

$Tab_Item_Indices = StringSplit(_GUICtrlListView_GetSelectedIndices($Lst_Stations), "|")
If IsArray($Tab_Item_Indices) Then
    For $i = 1 To $Tab_Item_Indices[0]
        MsgBox(1024, "Indices sélectionnés ", $Tab_Item_Indices[$i])
        _ArrayAdd($Tab_Item_Select,_GUICtrlListView_GetItemTextArray($Lst_Stations,$Tab_Item_Indices[$i]))
        MsgBox(1024, "Texte de la colonne 1 de la sélection ", $Tab_Item_Select[$i][1])
    Next
Else
    MsgBox(1024, "Erreur", "Pas de sélection")
EndIf
 
Résultat : Je récupère bien le numéro d'indices des items sélectionnés, mais je ne récupère que du vide comme texte. Or mes 2 premières colonnes contiennent bien du texte.
J'ai retourné l'aide dans tous les sens ainsi que le forum, mais je ne trouve rien qui convienne.
Un petit coup de pouce serait le bien venu !
Merci.

Re: [..] Sélections multiples dans une listview

Posté : mer. 29 avr. 2009 00:35
par Tlem
Si dans votre code, vous modifiez cette ligne :

Code : Tout sélectionner

MsgBox(1024, "Indices sélectionnés ", $Tab_Item_Indices[$i])
par cette ligne :

Code : Tout sélectionner

MsgBox(1024, "Indices sélectionnés ", "Indice = " & $Tab_Item_Indices[$i] & "    Texte =" & _GUICtrlListView_GetItemText($Lst_Stations, $Tab_Item_Indices[$i])
Est-ce que le texte est affiché dans la boite de dialogue ?

Re: [..] Sélections multiples dans une listview

Posté : mer. 29 avr. 2009 11:10
par val25
J'ai inséré cette ligne, mais je n'obtiens que du vide !

Je suis revenu à l'exemple qui est donné par l'aide pour la fonction _GUICtrlListView_GetSelectedIndices et j'ai le même problème.
Je récupère bien les indices, mais pas le contenu des items.

Code : Tout sélectionner

#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>

Opt('MustDeclareVars', 1)

$Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work
Dim $Indices[25]

_Main()

Func _Main()
    Local $hListView
    
    GUICreate("ListView Get Selected Indices", 400, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
    GUISetState()

    ; Add columns
    _GUICtrlListView_AddColumn($hListView, "Column 1", 100)

    ; Add items
    _GUICtrlListView_AddItem($hListView, "Item 1")
    _GUICtrlListView_AddItem($hListView, "Item 2")
    _GUICtrlListView_AddItem($hListView, "Item 3")

    ; Select multiple items
    _GUICtrlListView_SetItemSelected($hListView, 1)
    _GUICtrlListView_SetItemSelected($hListView, 2)

    $Indices=StringSplit(_GUICtrlListView_GetSelectedIndices($hListView),"|")
    
    for $i=1 to $Indices[0] 
        MsgBox(4160, "Information", "Indices de la sélection : " & $Indices[$i])
        MsgBox(4160, "Information", "Text de l'item : " & _GUICtrlListView_GetItemText($hListView, $Indices[$i]))
    Next
    

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>_Main
 

Re: [..] Sélections multiples dans une listview

Posté : mer. 29 avr. 2009 11:34
par GaRydelaMer
Bonjour

j'ai remarqué ca aussi avec les ListView

remplace dans le dernier exemple la création de la listview et la ca va marcher:

Code : Tout sélectionner

    Local $GUI = GUICreate("ListView Get Selected Indices", 400, 300)
    $hListView = _GUICtrlListView_Create($GUI, "", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
 

Re: [..] Sélections multiples dans une listview

Posté : mer. 29 avr. 2009 13:21
par val25
Ca marche !
Reste plus qu'à adapter pour que ça fonctionne avec des colonnes multiples.
Je vous remercie vivement pour votre aide.

Re: [R] Sélections multiples dans une listview

Posté : mer. 29 avr. 2009 13:48
par Tlem
En cherchant un peut, j'ai trouvé d'où venait "l'erreur".
En fait, c'est au niveau de la fonction _GUICtrlListView_GetItemText.
Celle-ci n'interprétait pas correctement $Indices[$i] car elle considérait (à juste titre que c'était du texte ...).
Donc pour résoudre le problème sur le dernier exemple donné, il suffit de remplacer :

Code : Tout sélectionner

MsgBox(4160, "Information", "Text de l'item " & $Indices[$i] & " : " & _GUICtrlListView_GetItemText($hListView, $Indices[$i]))
par

Code : Tout sélectionner

MsgBox(4160, "Information", "Text de l'item " & $Indices[$i] & " : " & _GUICtrlListView_GetItemText($hListView, Number($Indices[$i])))