Ajouter une barre de défilement horizontale à une listbox

Soyez le premier à donner votre avis sur cette source.

Vue 8 231 fois - Téléchargée 621 fois

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

Ajouter un commentaire

Commentaires

Messages postés
37
Date d'inscription
dimanche 29 janvier 2006
Statut
Membre
Dernière intervention
29 mars 2010
1
Merci pour ce code !

Je n'ai pas réussi à mettre en place l'autre code et celui ci du premier coup...
Messages postés
6
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
25 septembre 2007

bjr au vrais "GURU" de VB.

la longueur de la scrollbar horizontal n'est pas correct quand on a fait avant un sendmessage, pour mettre des tabs dans la listbox. qq'un a un solution.

ce que j'essaye de faire c'est de simmuler un grid control, en utilisant les controls "lite" (standard) de vb6, pour creer un executable sans installation, parce que j'ai toujours des problemes d'installation entre machine et certain ocx ne passe pas bien, et si on n'est adminstrateur d'un poste alors ca ne marche pas.

merci

henri
Messages postés
1133
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
1
Merci Zenain...
4 ans après, ça fait toujours plaisir.
Messages postés
1
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
29 janvier 2007

Je ne sais pas si vous lirez ce message vu que entre le premier message et le mien il y a à peu près 4 ans, mais je souhaite dire à PROGRAMMIX que ton programme est toujours utile car je viens de l'utiliser, et comme l'a dit CRESUS18, Court mais éfficace et clair :) , comme quoi les programmes peuvent durer longtemps. En tout cas, merci à toi.

PS : pour les autres programmes équivalents, ils étaient tout aussi parfait :) . Mais que voulez-vous, il faut choisir. Donc bravo à vous tous !
Messages postés
3
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
26 septembre 2005

Salut,
Merci, car moi aussi ça m'a bien été utile...
10
Afficher les 16 commentaires

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.