Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

débutant + VB6 + ListView

2 réponses
Avatar
Enzo
bonjour,

Je suis débutant en VB et je souhaiterais gérer un double-clic sur des
icones dans un ListView.
Je souhaiterais récupérer l'identificateur de l'icone double-cliqué dans le
ListView, et si le double-clic est fait ailleurs dans la fenêtre là où il
n'y a rien, que cela enlève la sélection d'une icone précédemment cliqué et
que cela ne fasse rien.
Problème : je suis débutant !
Si j'insère dans mon code "Private sub ListView1_DblClick(index As Integer)"
comme donné dans la doc msdn, il y a une erreur à la compilation sur cette
ligne ! Je n'y comprend pas grand chose !

Un développeur charitable aurait-il un exemple de derrière les fagots ?

Merci
Denis

2 réponses

Avatar
ng
Salut,

Voici un code permettant de tester la sélection :

Private Sub Form_Load()
ListView1.ListItems.Add , , "test1"
ListView1.ListItems.Add , , "test2"
ListView1.ListItems.Add , , "test3"
ListView1.ListItems.Add , , "test4"
ListView1.ListItems.Add , , "test5"
End Sub

Private Sub ListView1_DblClick()
'est-ce qu'un item est selectionné ?
If Not ListView1.SelectedItem Is Nothing Then
MsgBox "Item #" & ListView1.SelectedItem.Index & " : " &
ListView1.SelectedItem.Text
End If
End Sub

Et le code suivant correspond peut être plus à ce que tu recherches :

'dernière position de la souris
Dim iDernXPos As Integer
Dim iDernYPos As Integer

Private Sub Form_Load()
ListView1.ListItems.Add , , "test1"
ListView1.ListItems.Add , , "test2"
ListView1.ListItems.Add , , "test3"
ListView1.ListItems.Add , , "test4"
ListView1.ListItems.Add , , "test5"
End Sub

Private Sub ListView1_DblClick()
'est-ce qu'un item est selectionné ?
Dim oItem As ListItem
'renvoit un pointeur vers l'item sous le curseur
Set oItem = ListView1.HitTest(iDernXPos, iDernYPos)
If Not oItem Is Nothing Then 'est-ce un item ok ?
MsgBox "Item #" & oItem.Index & " : " & oItem.Text
End If
Set oItem = Nothing
End Sub

Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As
Single, y As Single)
'enregistre la dernière position de la souris
iDernXPos = x
iDernYPos = y
End Sub

Il y a aussi une solution par subclassing (message LVM_HITTEST) si cela ne
te convient pas.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Enzo a écrit :

bonjour,

Je suis débutant en VB et je souhaiterais gérer un double-clic sur des
icones dans un ListView.
Je souhaiterais récupérer l'identificateur de l'icone double-cliqué
dans le ListView, et si le double-clic est fait ailleurs dans la
fenêtre là où il n'y a rien, que cela enlève la sélection d'une icone
précédemment cliqué et que cela ne fasse rien.
Problème : je suis débutant !
Si j'insère dans mon code "Private sub ListView1_DblClick(index As
Integer)" comme donné dans la doc msdn, il y a une erreur à la
compilation sur cette ligne ! Je n'y comprend pas grand chose !

Un développeur charitable aurait-il un exemple de derrière les fagots
?

Merci
Denis


Avatar
ng
Ok !

Y a pas d quoi ;-)

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
"Denis & Camilou" a écrit dans le message de
news:
OK, j'ai testé.
Le premier code me fait le problème que j'ai rencontré, à savoir que si on
double-clic ailleurs que sur un item, le dernier item sélectionné est pris
en compte.
Le deuxième code est ce que je souhaitais, encore merci.
Enzo

"ng" a écrit dans le message news:

> Salut,
>
> Voici un code permettant de tester la sélection :
>
> Private Sub Form_Load()
> ListView1.ListItems.Add , , "test1"
> ListView1.ListItems.Add , , "test2"
> ListView1.ListItems.Add , , "test3"
> ListView1.ListItems.Add , , "test4"
> ListView1.ListItems.Add , , "test5"
> End Sub
>
> Private Sub ListView1_DblClick()
> 'est-ce qu'un item est selectionné ?
> If Not ListView1.SelectedItem Is Nothing Then
> MsgBox "Item #" & ListView1.SelectedItem.Index & " : " &
> ListView1.SelectedItem.Text
> End If
> End Sub
>
> Et le code suivant correspond peut être plus à ce que tu recherches :
>
> 'dernière position de la souris
> Dim iDernXPos As Integer
> Dim iDernYPos As Integer
>
> Private Sub Form_Load()
> ListView1.ListItems.Add , , "test1"
> ListView1.ListItems.Add , , "test2"
> ListView1.ListItems.Add , , "test3"
> ListView1.ListItems.Add , , "test4"
> ListView1.ListItems.Add , , "test5"
> End Sub
>
> Private Sub ListView1_DblClick()
> 'est-ce qu'un item est selectionné ?
> Dim oItem As ListItem
> 'renvoit un pointeur vers l'item sous le curseur
> Set oItem = ListView1.HitTest(iDernXPos, iDernYPos)
> If Not oItem Is Nothing Then 'est-ce un item ok ?
> MsgBox "Item #" & oItem.Index & " : " & oItem.Text
> End If
> Set oItem = Nothing
> End Sub
>
> Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x


As
> Single, y As Single)
> 'enregistre la dernière position de la souris
> iDernXPos = x
> iDernYPos = y
> End Sub
>
> Il y a aussi une solution par subclassing (message LVM_HITTEST) si cela


ne
> te convient pas.
>
> --
> Nicolas G.
> FAQ VB : http://faq.vb.free.fr
> API Guide : http://www.allapi.net
> Google Groups : http://groups.google.fr/
> MZ-Tools : http://www.mztools.com/
>
> Enzo a écrit :
>
> > bonjour,
> >
> > Je suis débutant en VB et je souhaiterais gérer un double-clic sur des
> > icones dans un ListView.
> > Je souhaiterais récupérer l'identificateur de l'icone double-cliqué
> > dans le ListView, et si le double-clic est fait ailleurs dans la
> > fenêtre là où il n'y a rien, que cela enlève la sélection d'une icone
> > précédemment cliqué et que cela ne fasse rien.
> > Problème : je suis débutant !
> > Si j'insère dans mon code "Private sub ListView1_DblClick(index As
> > Integer)" comme donné dans la doc msdn, il y a une erreur à la
> > compilation sur cette ligne ! Je n'y comprend pas grand chose !
> >
> > Un développeur charitable aurait-il un exemple de derrière les fagots
> > ?
> >
> > Merci
> > Denis
>
>