Combobox et mousemove

tom_logan Messages postés 18 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 6 septembre 2006 - 17 juin 2004 à 21:39
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 - 18 juin 2004 à 10:58
bonjour à tous.
et tout d'abord, j'tiens à remercier les bonnes âmes qui ont répondu à mes précédentes questions.
ça m'a pas vraiment aidé à réalisé ce que j'veux (ou alors j'suis encore plus nul que je croyais %-6 ) mais ça a au moins le mérite (et pas des moindres) de m'avoir aidé à comprendre certains aspects.

pour rappel (on va essayer de formuler différemment) :
j'essaie d'identifier dans la liste déroulante d'un combobox les différents éléments de cette liste sans avoir à cliquer dessus, juste en passant dessus (quand l'élément passe en surbrillance).

si qqun a une idée... j'suis preneur !

de mon coté, n'arrivant à rien, j'ai commencé à faire des tests en utilisant l'événements MouseMove et j'suis encore une fois tombé sur une tuile... je m'explique :
pour mieux comprendre, vous pouvez executer le code suivant :
Sub LB1_mousemove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Range("a1") = Y
End Sub

vous vous apercevrez que, quand vous déplacez la souris de haut en bas au dessus du combo, les coordonées Y s'affiche (par exemple de 0,0 à 15,0 si la propriété Height est de 15).
bon, jusque là rien d'incompréhensible, même pour moi 8-) .
par contre, si vous dérouler la liste et faite la même opération, vous verrez que les coordonnées vont de 0,0 à 15,0 et que ensuite elle repasse à 0,0 et augmente jusqu'à la fin de la liste.

ma question est donc en somme : mais pourquoi ???!!! :(

ca me gene total car la conséquence est qu'un test sur une unique valeur de Y (entre 0 et 15) va être vrai sur 2 régions différentes.

Aie ! j'viens de me rendre compte que j'ai écrit un roman !
mille merci à ceux qui sont allé au bout !
et toute m'a gratitude à celui qui m'aidera ! HELP !

a+

tom

2 réponses

gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
18 juin 2004 à 09:30
Salut,

avec mousemove, c'est normal. Comme tu quittes la zone du combobox pour scroller, le cursor se positionne sur la première ligne. Si tu veux la position exacte, il faut que tu tiennes compte du scroll déjà parcouru. Mais je ne sais si c'est possible. Je vais regarder s'il y a un autre moyen pour ta sélection. Je te tiens au courant.

A+
0
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
18 juin 2004 à 10:58
Me revoilà.

Voilà une solution:
Private Sub DataCombo1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If DataCombo1.VisibleCount > 0 Then Adodc1.Recordset.Bookmark = DataCombo1.VisibleItems(0)
'Text1.Text = Adodc1.Recordset.Fields("Nom").Value
If Not IsNull(DataCombo1.SelectedItem) Then
Adodc1.Recordset.Move (DataCombo1.SelectedItem - 1)
Text1.Text = Adodc1.Recordset.Fields("Nom")
End If
End Sub

A+
0
Rejoignez-nous