[R] Sélections multiples dans une listview

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
val25
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 16 juin 2008 16:33
Status : Hors ligne

[R] Sélections multiples dans une listview

#1

Message 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.
Modifié en dernier par val25 le mer. 29 avr. 2009 13:22, modifié 2 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message 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 ?
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é".
val25
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 16 juin 2008 16:33
Status : Hors ligne

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

#3

Message 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
 
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#4

Message 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))
 
val25
Niveau 2
Niveau 2
Messages : 16
Enregistré le : lun. 16 juin 2008 16:33
Status : Hors ligne

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

#5

Message par val25 »

Ca marche !
Reste plus qu'à adapter pour que ça fonctionne avec des colonnes multiples.
Je vous remercie vivement pour votre aide.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#6

Message 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])))
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é".
Répondre