Salut
J'ai trouvé sur code sur
http://blackbeltvb.com (en anglais facile)
Je vous conseille d'aller y faire un tour : Section FAQ = Pas mal de petits exemples bien utiles.
Je l'ai tout bien commenté en français rien que pour vous ;-)
Bref, ce petit code permet de faire apparaître l'Item d'un ListBox dans le ToolTipText (texte qui s'affiche juste à côté de la souris quand vous survoler un objet).
Ceci est bien pratique, par exemple, pour afficher l'Item entier alors que la ListBox est trop étroite.
Source / Exemple :
' Avant d'insérer ces lignes dans un projet, insérez une ListBox sur une Form.
'--------------------------------------------------------------------------------------
Option Explicit
' Idée récupérée sur l'excellent site http://blackbeltvb.com (en anglais facile)
' Vous y trouverez une ribambelle de petits exemples (Section FAQ)
' D'autres codes biens aléchants aussi, mais payants
' Jack, jacques.millet@developers-association.org
Const LB_GETITEMHEIGHT = &H1A1
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Form_Load()
' En guise d'exemple, on va charger dans une ListBox le
' contenu du répertoire en cours.
Dim Temp As String, i As Integer
' Pour mettre en évidence le côté pratique de cette routine,
' il vaut mieux que la ListBox ait des dimensions réduites
List1.Width = 1200
' Compte le nombre d'items, 'cause List ne peut pas avoir plus de 32767 éléments
i = 0
' Initialise le listing du répertoire
Temp = Dir(App.Path & "\*.*")
Do While (Temp <> "") And (i < 32000)
' Ajoute ce fichier à la liste
List1.AddItem Temp
i = i + 1
Temp = Dir()
DoEvents
Loop
End Sub
Private Sub List1_MouseMove(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single)
' Le dimensionnement en Static permet de garder le contenu de
' la variable entre deux exécutions
Static bInitialisé As Boolean, lIndexPrécédent As Long
Dim lPositionY As Long, lHauteurItem As Long, lIndex As Long
' La souris vient de bouger sur notre ListBox
' On récupère la coordonnée Y de la souris (en twips)
' (Cette coordonnée est relative à la ListBox)
lPositionY = Y \ Screen.TwipsPerPixelY
' On demande à la ListBox de renvoyer la hauteur d'un Item
lHauteurItem = SendMessage(List1.hwnd, LB_GETITEMHEIGHT, 0, ByVal 0)
' On calcule la ligne correspondante en divisant la coordonnée
' par la hauteur d'un Item, auquel on ajoute l'Index du
' premier Item visible de la ListBox
lIndex = lPositionY \ lHauteurItem + List1.TopIndex
' Pour éviter de réécrire sans cesse le ToolTipText, on mémorise
' l'index que l'on vient de traiter et on ne répetera pas la
' séquence si cet index est inchangé
If Not bInitialisé Or lIndexPrécédent <> lIndex Then
' Mémorise qu'on a déjà fait cette recherche au moins une fois
bInitialisé = True
' Mémorise l'index traité
lIndexPrécédent = lIndex
' Comme texte du ToolTipText, on va coller le texte de l'item
' de la liste, mais cela pourrait être n'importe quoi d'autre
List1.ToolTipText = List1.List(lIndex)
End If
End Sub
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.