loic38760
Messages postés48Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention22 juin 2009
-
8 janv. 2005 à 17:39
loic38760
Messages postés48Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention22 juin 2009
-
9 janv. 2005 à 12:07
J'ai VB6 et je n'arrive pas à faire une fonction evenementielle de type "nomducontroleshape"_click.
Si je double clique sur un shape il ne me permet pas de faire une fonction evenementielle avec comme un boutton par exemple, quelqu'un pourrait me dire comment faire un fonction evenementielle de clic sur un shape svp ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 9 janv. 2005 à 11:55
Quand tu double clique sur un CommandButton il y a l'évênement Click qui apparaît, pas l'évênement lui-même bien sûr mais la procédure de l'évênement, tu peux choisir un autre évênement en cliquant en haut à droite, par exemple KeyPress, KeyDown, KeyUp, MouseDown, MouseMove, etc... ou choisir un autre contrôle en cliquant en haut à gauche.
si l'évênement n'apparaît pas c'est qu'il n'existe pas par exemple la Shape n'apparaît même pas dans la fenêtre de droite.
en cours de l'évênement des paramètres peuvent être passés à la procédure, Button, Shift, Index, etc.. dans l'évênement Click on ne trouve aucun paramètre, cet évênement n'est activé que pour le bouton gauche de la souris, donc inutile et même impossible de le tester, il en est pas de même avec l'évênement MouseDown, MouseUp,
MouseMove ce qui nous permet de savoir quel bouton a été pressé
Private Sub Command1_Click()
' place ton code ici
MsgBox "Vous avez pressé le bouton gauche"
End Sub
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then MsgBox "Le bouton droit à été pressé"
If Button = vbMiddleButton Then MsgBox "Le bouton du centre à été pressé"
If Button = vbLeftButton Then MsgBox "Le bouton gauche à été pressé"
If Shift = 1 Then MsgBox " la touche Majuscule a été pressé"
MsgBox "la position de la souris est X=" & X & " Y=" & Y
End Sub
cs_castor62
Messages postés52Date d'inscriptiondimanche 1 décembre 2002StatutMembreDernière intervention19 septembre 2007 8 janv. 2005 à 18:09
Lu
Quand tu double clik sur le composant ( que ce soit shape, label ou autre), il y a un évenement qui est choisi qui se situe dans le menu déroulant au dessus a droite de la page de code.
Si tu veux le clik, il te suffit de le changer en le choisissant.
MoiOlivier
Messages postés172Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 4 août 2005 8 janv. 2005 à 19:01
Salut,
C'est marrant, mais avant ta question, je n'avais jamais remarqué la chose :
Manifestement, les contrôles Shape ne gèrent pas d'évènements !
Hihi, je savais pas non plus...
Faudra probablement que tu trouves autre chose...
@+ et bonne prog.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 8 janv. 2005 à 19:20
aucun évênement sur les Shapes, la seule solution est de détecter soi même la position de la souris.
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim x1 As Long
Dim x2 As Long
Dim y1 As Long
Dim y2 As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Form_Load()
x1 = Shape1.Left
x2 = x1 + ScaleX(Shape1.Width, ScaleMode, vbPixels) - 1
y1 = Shape1.Top
y2 = y1 + ScaleY(Shape1.Height, ScaleMode, vbPixels) - 1
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim point As POINTAPI
Dim Xpos As Long
Dim Ypos As Long
If Button = vbLeftButton Then
GetCursorPos point
Xpos = point.X - ScaleX(Me.Left, vbTwips, vbPixels) - 4
Ypos = point.Y - ScaleY(Me.Top, vbTwips, vbPixels) - 34
If Xpos > x1 And Xpos < x2 And Ypos > y1 And Ypos < y2 Then
Shape1.BorderColor = vbRed
Else
Shape1.BorderColor = vbBlack
End If
End If
End Sub
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 8 janv. 2005 à 19:37
n'importe quel contrôle (Frame, TextBox, Image, PictureBox,..) qui ont un évênement MouseDown et où tu peux tester le click de la souris.
If Button = vbLeftButton Then ...
If Button = vbRightButton Then ...
If Button = vbMiddleButton Then ...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 8 janv. 2005 à 19:38
Le shape est un contrôle "static" tout comme le contrôle Line,
c'est-à-dire qu'aucun événement ne lui est lié : il sert juste à la
déco en quelque sorte !
Le plus simple reste de faire ton propre usercontrol qui gère les événements dont tu as besoin.
DarK Sidious
[Administrateur et responsable VB/API du site ProgOtoP]