Pb Scrollbar

Résolu
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 - 20 oct. 2004 à 15:50
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 - 21 oct. 2004 à 10:18
J'ai un petit souci.
Je suis en train de developper un viewer et je gere les scrolls bar.
J'ai fait pas mal de raccourci clavier dont les déplacements avec les fleches de direction lors d'un zoom.
Mon pb est que quand je clic sur gauche ou droite ma scroll bar horizontal décale à l'horizontal mon image et vis et versa avec les fleches du haut et du bas pour le deplacement vertical. mais comme ma scroll bar horizontal (par exemple) à le focus, il me décale l'horizontal avec les fleche du haut et du bas avant de passer sur sur la vertical.
Comment faire pour passer le focus à la scroll bar vertical avec les fleches du haut ou du bas en étant positionné sur la scroll bar horizontal et sans qui me bouge la scroll bar horizontal mais directement la vertical ?

Si vous avez compris, merci de votre aide
Falstuff

7 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 oct. 2004 à 01:11
Rectifications:
Il y a un retard d'une touche et quand t'appuies sur la flèche droite c'est la touche précédente qui est traitée.

il faut jamais donner le Focus aux Scrollbars.
donc propriété TabStop à False.
et traitement des touches flèches par programme:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 37 Then
If HScroll1.Value > HScroll1.Min Then HScroll1.Value = HScroll1.Value - 1
End If
If KeyCode = 39 Then
If HScroll1.Value < HScroll1.Max Then HScroll1.Value = HScroll1.Value + 1
End If
If KeyCode = 38 Then
If VScroll1.Value > VScroll1.Min Then VScroll1.Value = VScroll1.Value - 1
End If
If KeyCode = 40 Then
If VScroll1.Value < VScroll1.Max Then VScroll1.Value = VScroll1.Value + 1
End If
End Sub
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 oct. 2004 à 20:36
tu récupères où tes évênements clavier ?

sinon pour changer le focus tu fais ça:
If KeyCode 38 Or KeyCode 40 Then VScroll1.SetFocus If KeyCode 37 Or KeyCode 39 Then HScroll1.SetFocus
0
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 2
20 oct. 2004 à 23:32
merci de ta réponse gobilot
les evenements clavier je les récuperes sur tout les objets de ma fenetre (btn, image, scrollbar, forms, ect...)
J'ai fait une fonction qui traite les différents Keycode en recevant comme parametre la touche utilisé.
Sinon, j'ai géré comme tu as dit dans ta réponse : If KeyCode 38 Or KeyCode 40 Then VScroll1.SetFocusIf KeyCode 37 Or KeyCode 39 Then HScroll1.SetFocus
Mais on dirait que pour le scroll bar, l'évenement change ou scroll ou la fonctionnalité propre au scroll bar est prioritaire a l'événément keydown. donc lorsque je passe le focus avec le code ci dessus, ca décale d'abord la scroll bar qui a le focus pour se positionner aprés sur l'autre scroll bar.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 oct. 2004 à 23:58
D'accord j'ai vu le problème, il y a un léger déplacement de la Scrollbar avant de passer à l'autre.

Pour régler le problème tu met la propriété TabStop à False pour les Scrollbars.

NB: en mettant la propriété KeyPreview à True de la Forme tu récupère tous les évênements clavier au même endroit, c'est à dire dans Form_KeyDown, Form_KeyUp, Form_KeyPress
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 2
21 oct. 2004 à 09:53
Merci bien,
il me reste encore un pb, mais dans l'ensemble ca marche.
Le truc c'est que tout mes objets sont invisibles. et meme si je met la propriété tabstop à false pour les scrollbar, dés que j'utilise les fleches ca donne le focus à une scroll bar ce qui fait mal fonctionner le code.
Sinon j'ai essayé de mettre une zone de texte elle garde le focus et ca marche.
0
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 2
21 oct. 2004 à 10:06
En fait pour le faire fonctionner, j'suis obligé d'avoir un textbox dans ma fenetre or j'en veux pas, lol.
De plus, j'ai observé que les touches de directions déplace bien les scrollsbar mais aussi ca change de position dans la chaine de caratere dans le textbox.
Si tu peux me communiquer une adresse email, je pourrai t'envoyé mon applic pour que tu puisse mieux voir mon pb
merci
0
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 2
21 oct. 2004 à 10:18
Bon j'ai trouvé la solution. J'ai envoyé le textbox à -5000000 pour left et top, comme ca, l'user ne le voit pas et ta solution fonctionne parfaitement.
Merci pour ton aide
@++
0
Rejoignez-nous