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

cs_caux 46 Messages postés vendredi 8 juillet 2005Date d'inscription 14 juin 2007 Dernière intervention - 14 nov. 2005 à 14:13 - Dernière réponse : econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention
- 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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 14 nov. 2005 à 15:25
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]

Merci PCPT 3

codes-sources a aidé 80 internautes ce mois-ci

jpleroisse 1788 Messages postés mardi 7 novembre 2000Date d'inscription 11 mars 2006 Dernière intervention - 14 nov. 2005 à 14:45
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.
cs_caux 46 Messages postés vendredi 8 juillet 2005Date d'inscription 14 juin 2007 Dernière intervention - 14 nov. 2005 à 17:58
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 14 nov. 2005 à 18:37
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]
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 14 nov. 2005 à 20:55
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.