[R] Image dans ListView

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Image dans ListView

#1

Message par Ks10 »

Bonsoir à tous !

J'ai besoin de quelques renseignements concernant les listviews.
Le but principale est de listé des données et avoir un contrôle sur chacune de ces lignes.

1er besoin :

- Avoir une ligne avec des données et une dernière colonne avec des icônes.

2ième besoin :

- Pouvoir cliqué sur ces icônes quelques soit le nombre de ligne présente dans la listview.

Voici un début de code et je suis déjà bloqué :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $List1 = GUICtrlCreateListView("Colonne 1|Colonne 2|Colonne 3|Icone", 0, 0, 609, 422)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

For $i = 0 To 10
           GuiCtrlCreateListViewItem($list1, "" & "|Test|Test|Test|")
       GUICtrlSetImage($List3, "shell32.dll", 23, 0)
Next


While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


 
Donc voila plusieurs question :


- Si je fait comme sa, j'ai une icone sur la première colonne mais comment la placer n'importe ou ?
- Sur la dernière colonne par exemple ?
- Comment rajouter une autre icône à coté de l'autre ?
- Je peut cliquer sur ces icones ? indépendemment de l'autre ? et des lignes ?

Merci d'avance pour vos réponses.
Modifié en dernier par Ks10 le dim. 13 juil. 2014 13:03, modifié 3 fois.
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Image dans listview

#2

Message par Hugues »

Bonjour,

Un truc comme cà?:
► Afficher le texte
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Image dans listview

#3

Message par Ks10 »

Au niveau des icônes cela correspond, j'avait déjà tester cette solution.
Mais au niveau du listing, cela ne correspond pas. C'est beaucoup trop "manuel" et moins "automatique".

Dès le moment où je met sa :

Code : Tout sélectionner

For $î = 0 To 10

    _GUICtrlListView_AddItem($idListview, "Row 1: Col 1", 0)
    _GUICtrlListView_AddSubItem($idListview, 0, "Row 1: Col 2", 1, 1)
    _GUICtrlListView_AddSubItem($idListview, 0, "Row 1: Col 3", 2, 2)

Next
La premiere colonne est listé mais les autres non. Si je fait dans une boucle différente chaque colonne cela revien pareil.

Une autre solution ?
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Image dans listview

#4

Message par Hugues »

Je peux te proposer ça dans un premier temps:

Code : Tout sélectionner

[spoiler=]

#include <GuiListView.au3>
#include <GuiImageList.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
    Global $hListView = GUICtrlCreateListView("Colonne 1|Colonne 2|Colonne 3|Icone", 0, 0, 609, 422)
    Global $NumberOfRows = 20, $hImage
    GUISetState(@SW_SHOW)
    $hImage = _GUIImageList_Create(16, 16, 5, 3)


    For $i = 0 To $NumberOfRows
        _GUICtrlListView_AddItem($hListView, "Row 1: Col 1", 0)
        _GUICtrlListView_AddSubItem($hListView, $i, "Row 1: Col 2", 1, 1)
        _GUICtrlListView_AddSubItem($hListView, $i, "Row 1: Col 3", 2, 1)
        GUICtrlSetImage($hListView,"shell32.dll", $i + 1)
    Next


    While 1
        $nMsg = GUIGetMsg()
            Switch $nMsg
                Case $GUI_EVENT_CLOSE
                Exit

            EndSwitch
    WEnd



[/spoiler]
ensuite il y a un sujet qui est pas mal ^^: http://www.autoitscript.fr/forum/viewto ... 20&t=10120
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Image dans ListView

#5

Message par Ks10 »

Ta solution, fonctionne mais pas avec la commande GuiCtrlCreateListViewItem ^^ je dois faire fonctionné avec sa. Mais bon c'est pas grave j'ai enlever l'idée des icônes, c'est un peu plus chiant à gêrer avec les icônes.

Par contre j'ai un autre petit soucis :

- Est-il possible de détecté un double clique dans la listview ?
J'ai trouver des sujets qui parle de $WM_notify mais cela ne semble pas fonctionné avec "GuiCtrlCreateListView".

J'ai tenter d'élaborer une fonction avec _IsPressed("01") avec une sorte d'évènement de porte 0 et 1 mais cela ne fonctionne pas non plus.

Si quelqu'un a la solution je suis preneur.

Merci d'avance
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Image dans ListView

#6

Message par mikell »

Le WM_NOTIFY fonctionne
On peut tout à fait (à 99%) faire un mix des fonctions listview intégrées avec celles de l'UDF
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Image dans ListView

#7

Message par Ks10 »

Ah oui effectivement, avec ta fonction ça fonctionne, c'est surement les fonctions que j'ai récupérer qui n'était pas bonne.

En tous cas, merci encore pour vos réponses. Sujet resolved :)
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [R] Image dans ListView

#8

Message par Ks10 »

Je ré-ouvre ce sujet car il est en rapport avec le poste précédent.
En utilisant la fonction WM_Notify , j'essaye d'ouvrir une autre interface lorsque je clique sur un item de ma listview.
Cependant je ne sait pour quel raison mon programme plante dès que cette fenêtre apparaît.

Voici le code de l'interface et la fonction :
► Afficher le texte

La fonction :
► Afficher le texte
Je pense que le plantage est du à la boucle qui s'imbrique dans la fonction mais je ne comprend pas comment faire autrement.

Merci d'avance.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Image dans ListView

#9

Message par mikell »

Pourtant tu devrais puisque tu sais utiliser GUIGetMsg(1)
Perso, je créerais la gui $form3 en début de script et cachée, juste un 'show' dans le wm_notify et la gestion dans la boucle principale du script
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: Re : [..] Image dans ListView

#10

Message par Ks10 »

OK je vais faire ça alors, pourtant dans le reste de mon code c'est ce que jai fait jai créé toute les autres gui avant et je les est caché pour celui la jai voulu utiliser cette méthode mais cela ne semble pas être la plus adéquate.
Merci encore.
Répondre