Bonjour,
C'est très intéressant, merci !
Mais pourquoi faire Return True dans MouseMove ?
Il me semble que cela marche sans et évite les inconvénients que vous
exposez.
rowNbr = (Y \ RowHeight) - 1 // Row is 0-Based
Est-ce une erreur dans votre code ? je mets : rowNbr = (Y \
DefaultRowHeight) - 1 // Row is 0-Based
A+
Benoit
Le 23 mai 07 à 15:41, Emile Schwarz a écrit :
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
|