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