begin process at 2012 02 14 00:50:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > TOOLTIPTEXT SUR LISTBOX (1 PAR ITEM)

TOOLTIPTEXT SUR LISTBOX (1 PAR ITEM)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :02/11/2004 Vu :5 699

Auteur : econs

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • 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
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.


 Sources du même auteur

[ASTUCE] MESSAGEBOX QUI N'ARRETE PAS LE PROCESSUS COURANT
Source avec Zip SUBCLASSING - RÉCUPÉRER PLUS D'EVENEMENTS.
DETECTER CANCEL SUR L'INPUTBOX
Source avec Zip Source avec une capture TRI NUMÉRIQUE LISTBOX COMBOBOX
Source avec Zip Source avec une capture PAINTFORM SANS API

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

Commentaires et avis

Commentaire de MadM@tt le 02/11/2004 17:28:50

Ce qui est super interessant dans ton code (personnelement) c'est de récupérer l'item survolé par la souris à un moment donné, ça va pas mal m'aider je crois merci
@ +

Commentaire de econs le 02/11/2004 20:57:24 administrateur CS

Bah oui. A part cette ligne de code-là, le reste est assez bidon.

Commentaire de MadM@tt le 03/11/2004 12:41:04

Et est ce que tu sais si ça marche pareil pour les ListView ?

Commentaire de fabsyl le 10/11/2005 16:28:01

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 ?

Commentaire de steve077 le 28/06/2008 20:12:05

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

Commentaire de econs le 28/06/2008 22:15:28 administrateur CS

Ben .... il y a autant de parenthèses ouvrantes et fermantes.
Tu le colles dans un projet Visual Basic 6 vierge ?

Commentaire de steve077 le 29/06/2008 09:46:12

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

Commentaire de nathansecret le 29/04/2009 17:39:16

Salut !
Je crois qu'il faut ajouter "+ 1" :

List1.ToolTipText = "Ceci est l'item n°" & indice + 1

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales