Comment récuperer l'evenement du clic sur une scrollbar dans une textbox [Résolu]

Messages postés
46
Date d'inscription
vendredi 8 juillet 2005
Dernière intervention
14 juin 2007
- - Dernière réponse : econs
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
- 14 nov. 2005 à 20:55
Bonjour,
je voudrais afficher un message dans un msgbox, lorsque l'utilisateur clique sur la scrollbar de mon textbox.

j'arrive très bien à le faire sur la textbox par l'evement _click, mais ca ne fonctionne pas si l'utilisateur clique sur la scrollbar.

peut-on récuperer l'evenement click sur la scrollbar?

cau'X
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
3
Merci
salut,
c'est faisable, par subclassing.

ici 2 évènements, le scroll, et le MouseDown [VB6] sur la barre de Scroll


'DANS UN MODULE
'
' PCPT [AFCK] 14 nov 2005
'
'module SubClassing appelant la procédure de la Form appelante au Scroll d'un objet
'
Option Explicit
'
'
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal _
wParam As Long, ByVal lParam As Long) As Long
'
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'
Private Const WM_MOUSEWHEEL = &H20A
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const GWL_WNDPROC = (-4)
'
Private Old_WindowProc As Long
'
'
'
Private Function New_WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_MOUSEWHEEL Then
New_WindowProc = True
Call Form1.Scroll(wParam)
ElseIf Msg = WM_NCLBUTTONDOWN Then
New_WindowProc = True
Call Form1.Click
End If
New_WindowProc = CallWindowProc(Old_WindowProc, hwnd, Msg, wParam, lParam)
End Function
'
'
Public Sub StartSubclassing(hwnd As Long)
Old_WindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf New_WindowProc)
End Sub
'
'
Public Sub StopSubclassing(hwnd As Long)
Dim lngRetVal As Long
lngRetVal = SetWindowLong(hwnd, GWL_WNDPROC, Old_WindowProc)
End Sub

'Form1 contenant Text1 multiligne avec scroll verticale
Option Explicit
'
'
Private Sub Form_Load()
Text1.Text = "a " & vbCrLf & "a " & vbCrLf & "a " & _
vbCrLf & "a " & vbCrLf & "a " & vbCrLf & _
"a " & vbCrLf & "a " & vbCrLf & "a " & _
vbCrLf & "a " & vbCrLf & "a " & vbCrLf & _
"a " & vbCrLf & "a " & vbCrLf & "a " & _
vbCrLf & "a " & vbCrLf & "a " & vbCrLf & _
"a " & vbCrLf & "a " & vbCrLf & "a "

Call StartSubclassing(Text1.hwnd)
End Sub
'
'
Private Sub Form_Unload(Cancel As Integer)
Call StopSubclassing(Text1.hwnd)
End Sub
'
'
Public Sub Scroll(wParam As Long)
Debug.Print "SCROLL"
End Sub
Public Sub Click()
Debug.Print "CLICK"
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


NB : ne pas fermer l'appli par END, et ne pas quitter par le bouton STOP de l'IDE
++
PCPT [AFCK]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Dernière intervention
11 mars 2006
25
0
Merci
Bonjour,

Non, la Scrollbar du textbox ne sert qu'à faire défiler le texte et n'as pas d'évenement Click.



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
Messages postés
46
Date d'inscription
vendredi 8 juillet 2005
Dernière intervention
14 juin 2007
0
Merci
Wahou je ne m'attendais pas à çà.
je croyai que c'était plus simple que çà à mettre en place.
je vais accepter cette réponse, mais je ne pense pas l'utiliser.
je crois que je vais rusé en mettant quelque chose sur la scrollbar de transparent "genre une imagebox"

merci quand même.

cau'X
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
0
Merci
comme tu veux.
là, tu as besoin d'un évènement n'existant par par défaut dans VB...
çà demande donc un minimum

et repérer ton click par un autre objet empêchera ton scroll...
@+
PCPT [AFCK]
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
20
0
Merci
caux > hélas, la solution de pcpt est bien la bonne, et la seule solution "propre".



Une de mes sources explique le subclassing, tu peux eventuellement t'en inspirer pour comprendre le code de pcpt.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.