Passer au contenu

Insérer un caractère de tabulation dans un contrôle RichText

Solution : en désactivant les propriétés de tabulation de tous les autres contrôles.

Lorsque, l’on appuie sur la touche à l’intérieur d’un contrôle RichTextBox de Visual Basic 4 à 6, cela a pour effet de déplacer la sélection (le focus) sur le contrôle suivant, mais pas d’insérer un caractère de tabulation. En effet, pour ajouter un tel caractère dans ce contrôle, il faut appuyer simultanément sur les touches et . Cela, l’utilisateur n’est pas censé le savoir. Pour que la touche de tabulation produise l’effet attendu, il faut désactiver la propriété TabStop de tous les autres contrôles. L’inconvénient est qu’il est alors nécessaire d’utiliser la souris pour passer d’un contrôle à un autre. La méthode proposée dans le listing ci-dessous est plus souple. Elle consiste, d’une part, à désactiver ces propriétés uniquement quand le contrôle RichTextBox a le focus et, d’autre part, à les rétablir ensuite pour que le reste du formulaire conserve un comportement normal. Pour appliquer cette méthode, créez un nouvel exécutable et placez, sur le formulaire, deux boutons de commande et un contrôle RichTextBox. Si ce dernier n’est pas disponible dans la barre d’outils, cliquez sur la commande Projet/Composants. Sélectionnez l’onglet Contrôles et cochez la case Microsoft Rich Textbox Control 6.0. Ouvrez la page de code par la commande Affichage/Code et insérez le listing. Lancez le programme avec la touche . Vérifiez que, lorsque le contrôle RichTextBox a le focus, la touche de tabulation insère bien des tabulations. En revanche, si vous déplacez le focus sur un autre contrôle en cliquant dessus avec la souris, la touche de tabulation déplace le focus sur le contrôle suivant.Listing :
Dim arrTabStop() As Boolean
Private Sub RichTextBox1_GotFocus()
‘ La propriété TabStop de chaque contrôle est sauvegardée dans un tableau
‘ puis cette propriété est mise à False sur tous les contrôles
ReDim arrTabStop(0 To Controls.Count – 1) As Boolean
For i = 0 To Controls.Count – 1
arrTabStop(i) = Controls(i).TabStop
Controls(i).TabStop = False
Next
End Sub


Private Sub RichTextBox1_LostFocus()
‘ La propriété TabStob est rétablie sur l’ensemble des contrôles
For i = 0 To Controls.Count – 1
Controls(i).TabStop = arrTabStop(i)
Next
End Sub

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Filigrane Press