Menu contextuel sur un textbox

Troopers - 26 avril 2001 à 19:40
oliviervillemain Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 25 août 2005 - 23 août 2005 à 08:53
Salut!
Le menu contextuel sur un textbox ext celui de cette saloperie de ?$#@ de Windows avec copier couper coller...
Je souhaite créer mon propre menu contextuel d'où le code:

Private Sub myTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu myMenu
End If
End Sub

jusque là pas de problème!!!

mais à l'execution, lors du click droit sur le textbox le menu contextuel de cette saloperie de ?$#@ de Windows apparait
et lors d'un deuxième click droit mon menu contextuel apparait enfin!!!

Comment faire pour ne pas avoir le menu contextuel de cette saloperie de ?$#@ de Windows ?
Merci d'avance
A voir également:

7 réponses

je viens juste de tester ton code, il marche bien...
j'ai pas le menu de zedaube qui apparait chez moi ...
0
Y at'il quelque chose de particulier que tu as fais?
option de VB ou autre?
t'es sous windows98 ou windows NT?
0
J'ai essayé sous win98 avec la version entreprise
et 2000Pro avec la version Professionnelle
sans rien faire de special
0
J'ai le même problème que vous.
C'est à dire:
Je souhaite créer mon propre menu contextuel d'où le code:

Private Sub myTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu myMenu
End If
End Sub

mais à l'execution, il faut deux clicks droit pour que mon menu contextuel apparaisse enfin!!!
Comment faire pour que mon menu apparaisse la première fois.

Merci d'avance
0

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

Posez votre question
IFFWarrior Messages postés 5 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 17 janvier 2006
9 nov. 2003 à 20:32
un gars a posté ça sur ce site...

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
Text1.Enabled = False
Text1.Enabled = True
PopupMenu MnuMenu
End If
End Sub

ma version améliorée (que j'ai fait d'apres celle ci-dessus):

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
' afficher un menu contextuel perso sur un textbox
' avec gestion du texte sélectionné
Dim SelStart As Integer
Dim SelLenght As Integer
If Button = 2 Then
SelStart = Text1.SelStart
SelLenght = Text1.SelLength
Text1.Enabled = False
Text1.Enabled = True
Text1.SelStart = SelStart
Text1.SelLength = SelLength
Text1.SetFocus
PopupMenu MnuMenu
End If
End Sub

lien vers le source 1:

http://www.vbfrance.com/code.aspx?ID=2651

;)
0
IFFWarrior Messages postés 5 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 17 janvier 2006
9 nov. 2003 à 20:36
oups ! correctif sur la ligne
SelLenght = Text1.SelLength

qui devient
SelLength = Text1.SelLength

(Erreur sur la position du 'h' dans SelLength, mais vous avez du le voir...)

;-)
0
oliviervillemain Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 25 août 2005
23 août 2005 à 08:53
Salut,

Cette solution du "Enabled = False" n'est malheureusement pas fiable à 100%.
Réalisez une rafale de clic droits et vous verrez votre menu perso apparaître mais également de temps en temps le maudit menu standard de microsoft.

LA solution, car il en existe bien une, est nettement plus dangereuse.
Il est utilisé le hooking (API windows) qui intercepte le clic droit de l'utilisateur avant même que le textbox ne le reçoive.

Si j'ai dit "dangereuse", c'est que si vous arrêtezl'exécution de votre projet par le carré Stop de VB (autrement dit sans passer par l'événement Unload), vous aurez un violent message d'erreur et la fermeture immédiate de votre projet (si vous n'aviez pas sauvegarder c'est dommage...)

L'adresse de LA solution propre : http://www.vbfrance.com/forum.v2.aspx?id=57656
Merci à rivierem qui apporte une solution fiable à 100 % et le code complet d'un exemple.
0
Rejoignez-nous