Bonjour,
C'est vrai, la nuit apporte la réflexion! [Plus quelques jours pour les
vérifications.]
J'ai donc pris une nuit de repos et ce matin (il y a une dizaine de
minutes), j'ai eu la bonne idée: utiliser ListBox1.MouseMove, calculer
la position (Row #) Y de la souris et enfin afficher le ListBox1.CellTag
DANS ListBox1.HelpTag. Ne pas oublier de mettre Listbox1.HelpTag à ""
dans MouseExit (encore que...).
L'idée est d'utiliser le mécanisme en place: HelpTag en lieu et place
d'une machine compliquée (un StaticText par exemple!).
Et le code ?
Voilà:
1. Prendre sur Internet là:
http://www.declaresub.com/Articles/HowDoI.html#listboxRowHeight
le code et suivre les instructions.
2. Ajouter Return True dans ListBox1.MouseDown
3. Dans ListBox1.MouseMove mettre le code:
Return True
4. Dans ListBox1.MouseExit mettre
Me.HelpTag = ""
5. Dans ListBox1.MouseMove:
//
// Report in a StaticText an "online help"
//
Dim RowHeight As Integer
Dim CellWidth As Integer
Dim RowNbr As Integer
Dim CellNbr As Integer
// Get this ListBox Row Height
RowHeight = Me.RowHeight
// Search the Row # where the Mouse is
RowNbr = (Y \ RowHeight) - 1 // Row is 0-Based
// I store the CellTag in Cell 0
CellNbr = 0 // Always in the column 0 (in my program)
// Display the CellTag contents in the StaticText
If RowNbr >= 0 And RowNbr < Me.ListCount Then
// Set the ListBox HelpTag
Me.HelpTag = Me.CellTag(RowNbr,CellNbr)
Else
// Clears the ListBox HelpTag
Me.HelpTag = ""
End If
Et voilà.
En fait, le "Tag" est installé pour chaque Row (toutes les Cell). Pour
une cellule individuelle, il faut tester la valeur X de la position de
la souris, calculer le numéro de la cellule qui se trouve dessous et
placer cette valeur dans CellNbr.
En revanche, j'ai un petit soucis: la souris n'est plus capable de
changer la largeur de la colonne, ni de bouger l'ascenseur vertical (là,
une souris avec roue contourne le problème). Un click dans une ligne
(Row) du ListBox est également rejeté (mais on peut naviguer avec les
touches fléchées, Page Up / Down / Home / End).
Celà est dû au Return True de l'évènement MouseDown.
A +,
Emile
|