Ajouter une barre de défilement horizontale à une listbox

Description

Il arrive parfois que les éléments d'une listbox soit plus long que sa largeur (par exemple si on liste des chemins d'accès). Il n'est alors pas possible de lire ce qui dépasse.

Aussi je vous propose le code suivant qui ajoute une barre de défilement horizontale à votre listbox, grâce à l'API SendMessage et le "message" LB_SETHORIZONTALEXTENT, vous permettant ainsi de pouvoir lire ce qui se trouve hors cadre.

Source / Exemple :


Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const LB_SETHORIZONTALEXTENT = &H194

Private Sub BarreDeDéfilement(lstBox As ListBox)
    Dim i As Integer
    Dim Largeur As Long
    
    Largeur = 0
    
    'Parcourt la liste, mesure la largeur des éléments et conserve la taille la plus large
    For i = 0 To lstBox.ListCount - 1
        If TextWidth(lstBox.List(i)) > Largeur Then Largeur = TextWidth(lstBox.List(i))
    Next i
    
    'Affiche une barre de défilement horizontale
    SendMessage lstBox.hwnd, LB_SETHORIZONTALEXTENT, Largeur + 5, 0
End Sub

Conclusion :


Comme d'autres de mes sources, je me suis servis d'un article d'Henri RUCH (et oui encore lui pour ceux qui regardent mes sources !) parus dans la revue "Programmez" (n°15).

Codes Sources

A voir également

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.