Questions sur contrôle HScrollBar [Résolu]

Signaler
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
-
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
-
Bonsoir à tous !

J'ai dans une forme un contrôle Hscrollbar horizontal nommé barre. J'aimerai déterminer quelle partie de ce contrôle est cliquée pour un faire un défilement dans une table. Je m'explique :


En 1, MovePrevious
En 2, MovePrevious n fois la valeur de barre.value
En 3, MoveNext n fois la valeur de barre.value
En 4, MoveNext

Pour résumer, y a-t-il un moyen de savoir si je clique en 1, 2, 3 ou 4 pour savoir quelle action je dois faire ?

Je sèche depuis qq jours et une aide serait la bienvenue !

Merci

Notpa

3 réponses

Messages postés
191
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
21 octobre 2020
5
Salut Notpa,

Non, impossible de faire simple avec les fonctions de Class données... comme toujours.

Mais il est très simple de le savoir:

Nouvelle Form, un HScroll1 horizontal.



Public Last_Sc_Val

Private Sub Form_Load()

HScroll1.SmallChange=1  ' Flèche gauche-droite (1-4) SmallChange<>LargeChange
HScroll1.LargeChange=2  ' Zone Flèche-curseur (2-3) Sinon ça marche pas.
HScroll1.Min=0  'Limite basse
HScroll1.Max=10  'Limite haute

Last_Sc_Val = HScroll1.Value
End Sub

Private Sub HScroll1_Change()
Last_Sc_Val = -(Last_Sc_Val - HScroll1.Value)
Me.Caption = Last_Sc_Val

Select Case Last_Sc_Val

        Case 0
            Me.Caption = "Scroll: curseur"
        Case -HScroll1.SmallChange
            Me.Caption = "Scroll: Min gauche"
        Case HScroll1.SmallChange
            Me.Caption = "Scroll: Min droite"
        Case -HScroll1.LargeChange
            Me.Caption = "Scroll: Max gauche"
        Case HScroll1.LargeChange
            Me.Caption = "Scroll: Max droite"
        Case Is < HScroll1.LargeChange
            Me.Caption = "Scroll: Max gauche"
        Case Else
            Me.Caption = "Scroll: Max droite"
End Select

Last_Sc_Val = HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
Last_Sc_Val = HScroll1.Value
End Sub


Par contre, si Value est inférieur a LargeChange et supérieur à SmallChange, la réponse est ambigüe car les deux peuvent donner la bonne réponse.

Sinon, il faut faire du sub-classing... et c'est moins simple.
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
1
Merci JeuDuTaquin !

Je vais étudier ça, mais plus tard. Je dois m'absenter qq jours.

A+

Notpa
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
1
Bonjour JeuDutaquin !

Génial ! Impec ! Ça marche nickel. Pour mieux voir ce qui se passe, j'ai ajouté dans ton code une grille qui montre les choix et les valeurs. Ce qui donne :


Si tu veux, je peux copier ce code pour infos.

Merci encore. A moi maintenant de me ballader dans la base Access en fonction des zones cliquées.

Je passe en Résolu.

Cordialement

Notpa