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 / Exemple :
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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.