Clic droit

arbomont Messages postés 57 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 3 février 2014 - 30 nov. 2004 à 14:12
dthuler Messages postés 121 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 29 avril 2009 - 30 nov. 2004 à 17:01
Dans mon programme j'ai un menu deroulant qui est activé lors d'un clic droit de la souris, en voici le code

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then PopupMenu mnuFile
mnuFile.Visible = False
'Met le menu Fichier en invisible

J'aimerai que ce menu se deroule uniquement quand le pointeur de la souris est positionné sur un objet, par exemple sur un objet "shape" ou une obet "picturebox"
Comment faire ???

Merci

jca

4 réponses

dthuler Messages postés 121 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 29 avril 2009
30 nov. 2004 à 14:35
Salut,

Mets le contrôle d'évènement sur le contrôle désiré,

Si c'est une picturebox:
Private Sub Picture1_MouseDown
If Button=2 Then PopupMenu mnuFile
...

Quand à la ligne mnuFile.Visible = False je ne comprends pas son intérêt...

Bon code,

~~ Brainiax ~~ 8-)
0
arbomont Messages postés 57 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 3 février 2014
30 nov. 2004 à 15:02
ça na marche pas, j'essaye de le faire quand la souris est positionné sur une textbox, mais cette methode ne fonctionne pas :sad)
jca
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 nov. 2004 à 16:05
Ben mets ton code dans l'événement MouseDown de ta textbox !
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
dthuler Messages postés 121 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 29 avril 2009
30 nov. 2004 à 17:01
C'est plus tordu que ça pour les textbox à cause d'un system event lié au textbox...

Voici un bout de code qui devrait faire ton affaire:

Private Declare Function LockWindowUpdate Lib "User32" (ByVal hWndLock As Long) As Long

Private Sub Text1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  'Une textbox désactivée ne provoque pas le menu contextuel système
  If Button=vbRightButton Then
    'Evite l'affichage de la textbox en gris
      LockWindowUpdate Text1.hWnd
      Text1.Enabled = False
      'Mise à jour des infos système
      DoEvents
      PopupMenu mnuFile
      Text1.Enabled = True
      'On remet tout en ordre...
      LockWindowUpdate 0&
    End If
End Sub


Amuses-toi bien, ça, ça marche ;-)

~~ Brainiax ~~ 8-)
0
Rejoignez-nous