Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

POPUP MENU COMPLET POUR RICHTEXTBOX (COPIER,COLLER,ETC...)


Information sur la source

Catégorie :Divers Classé sous : popup, menu, richtextbox, sendkeys, contextmenu Niveau : Débutant Date de création : 26/05/2005 Date de mise à jour : 26/05/2005 19:40:23 Vu / téléchargé: 6 683 / 1 093

Note :
Aucune note

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Un inconvenient du RichTextBox est qu'il n'y a pas de menu avec le click droit de la souris. Au début j'avais recréer les fonction copier , coller , couper , etc... , mais j'ai ensuite eu l'idée d'utiliser SendKeys pour appeller les raccourcis clavier de Windows (CTRL+ C , CTRL + V , etc...). De cette maniére les fonctions windows sont employés et le menu reagit exactement pareil que tout autre application , ce qui ne perturberat pas l'utilisateur final ;)
Le menu du click droit fonctionne exactement pareil que celui du TextBox classique.
 

Source

  • Private Sub mnuPopup_Click(Index As Integer)
  • ' Le menu utilisé pour le popup est un groupe de controle ,
  • ' on recupère l'index pour assigner une commande au menu.
  • ' En utilisant SendKeys , on evite de programmer les fonctions
  • ' de copier - coller en utlisant les raccourci clavier
  • ' (CTRL + C , CTRL + V , etc...)
  • '
  • ' Pour rappel : CTRL + Z = Annuler
  • ' CTRL + X = Couper
  • ' CTRL + C = Copier
  • ' CTRL + V = Coller
  • ' CTRL + A = Selectionner tout
  • Select Case Index
  • Case 0
  • SendKeys "^(z)" ' le ^ signifie la touche CTRL
  • Case 1
  • ' Separateur ' pour pouvoir indexer le menu , il faut que les menus indéxés
  • Case 2 ' doit aussi indexer les separateurs soit consecutifs, donc on
  • SendKeys "^(x)"
  • Case 3
  • SendKeys "^(c)"
  • Case 4
  • SendKeys "^(v)"
  • Case 5
  • SendKeys "{DEL}" ' ici c'est la touche SUPPR
  • Case 6
  • ' Separateur
  • Case 7
  • SendKeys "^(a)"
  • End Select
  • End Sub
  • Private Sub RichTextBox1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
  • ' Ici on met Enabled sur True ou False selon l'etat du RichtTextBox
  • ' On active le menu Copier si du texte est selectionné , etc....
  • '
  • ' Pour que le popup s'affiche sur n'importe quel RichTextBox ,
  • ' ils doivent tous faire partie de meme groupe de controles
  • With RichTextBox1(Index)
  • mnuPopup(0).Enabled = True
  • mnuPopup(2).Enabled = IIf(.SelLength > 0, True, False)
  • mnuPopup(3).Enabled = IIf(.SelLength > 0, True, False)
  • mnuPopup(4).Enabled = IIf(Clipboard.GetText <> "", True, False)
  • mnuPopup(5).Enabled = IIf(.SelLength > 0, True, False)
  • mnuPopup(7).Enabled = IIf(Len(.Text) > 0, True, False)
  • If .Locked = True Then
  • mnuPopup(0).Enabled = False
  • mnuPopup(2).Enabled = False
  • mnuPopup(4).Enabled = False
  • mnuPopup(5).Enabled = False
  • End If
  • End With
  • ' Et on affiche le menu si le clik droit est selectionné
  • If Button = 2 Then
  • PopupMenu mnuRichTextBox
  • End If
  • End Sub
Private Sub mnuPopup_Click(Index As Integer)

' Le menu utilisé pour le popup est un groupe de controle ,
' on recupère l'index pour assigner une commande au menu.
' En utilisant SendKeys , on evite de programmer les fonctions
' de copier - coller en utlisant les raccourci clavier
' (CTRL + C , CTRL + V , etc...)
'
' Pour rappel : CTRL + Z = Annuler
'               CTRL + X = Couper
'               CTRL + C = Copier
'               CTRL + V = Coller
'               CTRL + A = Selectionner tout

Select Case Index
   Case 0
      SendKeys "^(z)"       ' le ^ signifie la touche CTRL
   Case 1
      ' Separateur          ' pour pouvoir indexer le menu , il faut que les menus indéxés
   Case 2                   ' doit aussi indexer les separateurs soit consecutifs, donc on
      SendKeys "^(x)"
   Case 3
      SendKeys "^(c)"
   Case 4
      SendKeys "^(v)"
   Case 5
      SendKeys "{DEL}"      ' ici c'est la touche SUPPR
   Case 6
      ' Separateur
   Case 7
      SendKeys "^(a)"
End Select

End Sub

Private Sub RichTextBox1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)

' Ici on met Enabled sur True ou False selon l'etat du RichtTextBox
' On active le menu Copier si du texte est selectionné , etc....
'
' Pour que le popup s'affiche sur n'importe quel RichTextBox ,
' ils doivent tous faire partie de meme groupe de controles

With RichTextBox1(Index)
   mnuPopup(0).Enabled = True
   mnuPopup(2).Enabled = IIf(.SelLength > 0, True, False)
   mnuPopup(3).Enabled = IIf(.SelLength > 0, True, False)
   mnuPopup(4).Enabled = IIf(Clipboard.GetText <> "", True, False)
   mnuPopup(5).Enabled = IIf(.SelLength > 0, True, False)
   mnuPopup(7).Enabled = IIf(Len(.Text) > 0, True, False)
   If .Locked = True Then
      mnuPopup(0).Enabled = False
      mnuPopup(2).Enabled = False
      mnuPopup(4).Enabled = False
      mnuPopup(5).Enabled = False
   End If
End With



' Et on affiche le menu si le clik droit est selectionné

If Button = 2 Then
   PopupMenu mnuRichTextBox
End If

End Sub

Conclusion

Pour rendre tout ca encore plus beau , utilisez l'OCX de NoFutur pour les menus au look XP (les 2 popup du bas dans la capture d'écran)
>> http://www.vbfrance.com/code.aspx?id=16924
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 mai 2005 19:40:23 :
-

Commentaires et avis

signaler à un administrateur
Commentaire de max12 le 27/05/2005 01:58:41 administrateur CS

Il existe, il faut le cocher dans les propriétés, je sais plus laquel. Mais il est en anglais par contre.

A+

signaler à un administrateur
Commentaire de Danyz le 27/05/2005 02:43:30

ha.... je ne le savais pas

signaler à un administrateur
Commentaire de bouv le 27/05/2005 08:21:08

Juste un petit repproche.
Au lieu de
SendKeys "^(c)"
j'aurais préféré
Clipboard.SetText (RichTextBox1.SelText)
Et pour récupérer la valeur
Clipboard.GetText

C'est beaucoup plus propre que des SendKeys.

Bonne prog
++

signaler à un administrateur
Commentaire de Danyz le 27/05/2005 19:49:29

En effet, la propriété AutoVerbMenu du RichTextBox doit etre sur True pour afficher le menu contextuel du click droit , j'avais pas vu ca :(
(D'aillleurs le menu est en francais...)

Ma source perde de son interet :P (si ce n'est de pouvoir modifier le menu contextuel)

Bouv j'ai utiliser les SendKeys aussi pour le presse papier pour mettre le moins de code possible.
Quand tu fait un coller par exemple , il faut prendre en compte l'emplacement du curseur , donc decouper la chaine de caractere du richtextbox , inserer le presse papier , si du texte etait selectionné , il faut le remplacer par le presse papier etc...
Tout ca est fait automatiquement en faisant un CTRL + V.
Pour le copier on peut à la limite metttre un clipboard.settext

signaler à un administrateur
Commentaire de bouv le 28/05/2005 13:29:45

oui je sais c'est un peu plus complexe. Enfin c'est une opinion perso mais quand je peux eviter les sendkeys je le fait.
Sinon c'est pas mal.

Bonne prog
++

signaler à un administrateur
Commentaire de NoFutur le 30/05/2005 18:20:55

Salut,

Moi je crois que ta source ne perd pas de son intérêt car à chaque fois que j'utilise le RichtexBox je me programme toujours un menu contextuel a côté car il m'arrive parfois de me retrouver avec le menu par défaut mais en anglais alors pour éviter les petits défaut je programme le menu comme tu as fait :-)

Ya pas à dire mais ça donne bien avec cet OCX quand même :o)

Bonne prog !
@plus

signaler à un administrateur
Commentaire de tuneserapasmonnom le 25/08/2006 10:02:17

j'aimerai savoir comment tu fais pour que ta form soit viollette sur la photo et jolie, différente de d'habitude

signaler à un administrateur
Commentaire de Danyz le 25/08/2006 10:05:58

C'est un Theme pour XP, rien à voir avec VB ;)

http://www.tgtsoft.com/prod_sxp.php

++

signaler à un administrateur
Commentaire de tuneserapasmonnom le 28/08/2006 16:24:01

merci bien

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

PopUp Menu [ par Yerffuaj ] Bonjour, je ne connais pas très bien VB mais je fais un stage sous VB6 et il faudrait que j'arrive à augmenter la taille de police des popup menu qui Popup menu dans DBGrid ou équivalent [ par lolo ] Bonjour,je débute en VB6 et je voudrais faire un formulaire de visualisation/modification de données sur une table du style:MaTable: ID carac1 c Menus popup dans un MDIChild [ par Sandro ] Hello... je vais essayer de faire court :-)J'ai un p'ti soft MDI. Dans une feuille Child, je veux faire apparaître un menu Popup. J'y ajoute donc un m Popup menu [ par baba ] Comment peut on faire pour ajouter des icones dans un menu (popup) en VB ?Merci Popup menu qui ne disparait pas sous Win NT [ par clafouti ] J'ai le problème suivant : J'ai une icone dans le system tray (a coté de l'horloge). Lorsque je clique droit sur l'icone, je fait apparaître un popup Popup menu et fenetre sans border [ par PKist ] Lorsque je fais un menu, cela ajoute des border a ma fenetre de projet.comment créer un menu sans que cela n'ajoute de border ? menu popup [ par joflo ] si l'un de vous sait comment faire mercij'ai créé un menu avec le créateur de VB6 que je fait apparaitre sous le bouton sur lequel je cliquema questi Popup menu [ par sebleboss2002 ] Salut tout le monde !Je suis embêté car je veux créer un popup menu lors d'un clic sur un bouton, mais chaque fois :Erreur 428 : Le menu contextuel do Menu popup [ par rivierem ] Voila je voudrais creer un menu popup dynamiqueJ'arrive a le cree mais il ne s'affiche pas!!!Comment faire voila ma sourcePublic Sub charge_menu_ext fermer un popup menu [ par patrick ] Bonjour, Juste une petite question : j'aimerais fermer par programme un menu "popup" !merci d'avance, patrick Moirehttp:\\jeux.cartes.free.fr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.