Tooltiptext sur listbox (1 par item)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 497 fois - Téléchargée 35 fois

Contenu du snippet

Ce code permet d'avoir une infobulle différente pour chaque item d'une ListBox.
Rien de révolutionnaire.

Source / Exemple :


Option Explicit

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Private Const LB_ITEMFROMPOINT = &H1A9

Private Sub Form_Load()
Dim indice As Integer
    
    For indice = 1 To 10
        List1.AddItem "Item n° " & indice
    Next
    
End Sub

Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim p As POINTAPI
Dim indice As Long

    ' Récupère la position de la souris
    Call GetCursorPos(p)
    
    Call ScreenToClient(List1.hWnd, p)
    
    ' Récupère l'indice de l'élément survolé (grace à l'envoi de LB_ITEMFROMPOINT via SendMessage)
    indice = SendMessage(List1.hWnd, LB_ITEMFROMPOINT, 0&, ByVal ((p.X And &HFF) Or (&H10000 * (p.Y And &HFF))))
    If indice >= 0 Then
        indice = indice And &HFF
        List1.ToolTipText = "Ceci est l'item n°" & indice
    End If
End Sub

Conclusion :


Si vous ne voulez pas vous casser la tête, utilisez une ListView, il y a déjà un ToolTipText par item ;o)
Sinon ceci peut vous servir.

A voir également

Ajouter un commentaire Commentaires
nathansecret
Messages postés
63
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 octobre 2011

29 avril 2009 à 17:39
Salut !
Je crois qu'il faut ajouter "+ 1" :

List1.ToolTipText = "Ceci est l'item n°" & indice + 1
steve077
Messages postés
6
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
29 juin 2008

29 juin 2008 à 09:46
Salut
Oui j'ai fait un copié collé , il me met une erreur de parenthèses à la ligne 35,
mais quand j'essaye d'exécuter il me met une erreur de syntaxe à la ligne 35.
C'est très bizarre
econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
23
28 juin 2008 à 22:15
Ben .... il y a autant de parenthèses ouvrantes et fermantes.
Tu le colles dans un projet Visual Basic 6 vierge ?
steve077
Messages postés
6
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
29 juin 2008

28 juin 2008 à 20:12
Salut
J'ai un problème de parenthèse avec ce code quand je le colle dans un vb vierge(avec une list1).
Il est à la ligne 35
Merci d'avance d'une aide
fabsyl
Messages postés
8
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
31 mai 2006

10 nov. 2005 à 16:28
Bonjour,

Je cherche à faire ça sur une combobox.
Je veux récupérer l'item survolé par la souris dans la liste de la combo, mais il a pas l'instruction mousemove pour une combo !!
Est-ce que tu peux m'aider ?
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.