Passer au contenu

Comment ajouter une barre de défilement horizontal ?

Solution : en envoyant un message au contrôle ListBox.

Pendant la phase de création d’un programme, avec un contrôle de type ListBox, il est difficile de lui allouer la bonne dimension. On ne sait pas à l’avance quelle sera la longueur du texte qui y sera affiché. Le contrôle est capable de placer automatiquement une barre défilement verticale lorsqu’il y a trop de texte pour la fenêtre. Mais ce n’est malheureusement pas le cas pour la barre de défilement horizontale. La solution consiste à envoyer un message à la ListBox en lui fournissant, via la fonction TextWidth, la longueur (en points) de la chaîne de caractères la plus longue. Pour illustrer cette procédure, créez un nouveau projet exécutable et, sur le formulaire Form1, placez un contrôle de type Listbox et un bouton de commande.Conservez les noms que Visual Basic a donnés par défaut. Recopiez le listing ci-dessous dans la zone de code ouverte par la commande Affichage/Code. Lancez le programme par F5. Ici, le bouton de commande ne sert qu’à réduire la largeur du contrôle ListBox1, afin de bien montrer le fonctionnement du programme. Vous pouvez alors vérifier que, lorsque cette largeur n’est plus suffisante pour contenir la chaîne de caractères, une barre de défilement horizontale est automatiquement ajoutée.Listing :
Private Declare Function SendMessage Lib “user32” Alias “SendMessageA” (
ByVal hwnd As Long,
ByVal wMsg As Long,
ByVal wParam As Integer,
ByVal lParam As Long ) As Long


Private Sub Command1_Click()
List1.Width = List1.Width * 0.9
End Sub


Private Sub Form_Load()
Dim txt$, Ret As Long
ScaleMode = vbPixels
txt$ = “Voici un texte relativement long”
List1.AddItem txt$
Form1.Font.Size = List1.Font.Size
Ret = SendMessage(List1.hwnd, &H194, Form1.TextWidth(txt$), ByVal 0&)
End Sub

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


Alain Coupel