Bonjour,
je reviens poster une ébauche de solution qui ressemble plus à une bidouille qu'autre chose...
Ne pouvant pas maîtriser l'événement de défilement de la zone de liste, je m'appuie sur la propriété .Selected() car lorsque l'on exécute la commande suivante :
MaListe.Selected(i) = true
...si la ligne i n'est pas à l'écran, la barre de défilement se déplace de façon à afficher celle-ci.
Vous voyez où je veux en venir...??
Pour faire simple : Je dimensionne mes zones de liste de façon à ce qu'elles affichent toutes le même nombre de lignes. Ce nombre est contenu dans une variable que j'ai appelé listsize et placée dans le Form_Load() avec mon autre variable scrollposition qui indique la position relative de ma barre de défilement.
Ainsi avec mes 2 boutons je fais monter et descendre simultanément les barres de défilement de mes zones de liste.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Private Sub Form_Load()
listsize = 28 'Mes zones de liste affichent 28 lignes à l'écran
scrollposition = listsize
End Sub
Private Sub Btn_Scrolldown_Click()
If scrollposition < MaListe1.ListCount - 1 Then scrollposition = scrollposition + 1
MaListe1.Selected(scrollposition) = True
MaListe1.Selected(scrollposition) = False
MaListe2.Selected(scrollposition) = True
MaListe2.Selected(scrollposition) = False
MaListe3.Selected(scrollposition) = True
MaListe3.Selected(scrollposition) = False
End Sub
Private Sub Btn_Scrollup_Click()
If scrollposition > listsize Then scrollposition = scrollposition - 1
MaListe1.Selected(scrollposition - (listsize - 1)) = True
MaListe1.Selected(scrollposition - (listsize - 1)) = False
MaListe2.Selected(scrollposition - (listsize - 1)) = True
MaListe2.Selected(scrollposition - (listsize - 1)) = False
MaListe3.Selected(scrollposition - (listsize - 1)) = True
MaListe3.Selected(scrollposition - (listsize - 1)) = False
End Sub |
Et voilà... la prochaine étape est de combiner cette trouvaille avec l'événement MouseWheel pour se débarasser des 2 boutons très moches et utiliser la molette de la souris pour le même résultat.
@+
Partager