begin process at 2008 07 06 03:04:47
1 205 441 membres
21 nouveaux aujourd'hui
14 119 membres club

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é: 5 378 / 991

Note :
Aucune note

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

Description

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
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

26 mai 2005 19:40:23 :
-
  • 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

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS