Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AJOUTER UNE BARRE DE DÉFILEMENT HORIZONTALE À UNE LISTBOX


Information sur la source

Catégorie :API Niveau : Débutant Date de création : 08/03/2003 Date de mise à jour : 09/03/2003 10:58:39 Vu / téléchargé: 4 710 / 478

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

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

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Alain Proviste le 09/03/2003 15:37:24 administrateur CS

il est déjà sur le site plusieurs fois

mais ça n'est pas un mauvais code pour sûr...

signaler à un administrateur
Commentaire de Neo.balastik le 09/03/2003 17:49:36

En effet, une source existe déjà pour ce dont tu exposes: déposée le 18/05/2001 (ca date par d'hier)
http://www.vbfrance.com/article.aspx?Val=1344

Faire une simple recherche sur le mot-clé 'scrollbar' t'aurait montré que quelqu'un (moi même) s'était déjà atellé à la tâche.  Bonne prog tout de même.

signaler à un administrateur
Commentaire de PROGRAMMIX le 09/03/2003 20:16:28

Désolé, j'avais pourtant fait une rapide recherche avant de le poster.
J'ai encore dû aller trop vite...

signaler à un administrateur
Commentaire de cresus18 le 30/12/2004 16:53:59

Et bien moi, je lui mets 10 !!

J'ai trouvé ce code par hazard (car je cherchais autre chose) et je dois dire qu'il m'a quand même été bien utile.

En plus il est plus court que celui de Neo.balastik, il est aussi plus commenté. C'est une source comme je les aime : brêve mais efficace !!

Merci ;)

signaler à un administrateur
Commentaire de PROGRAMMIX le 30/12/2004 17:30:44

Merci cresus18

signaler à un administrateur
Commentaire de Alain Proviste le 30/12/2004 19:38:57 administrateur CS

lol ;)
ca fait plaisir hein programmix, un commentaire sur une vielle source :)

signaler à un administrateur
Commentaire de PROGRAMMIX le 30/12/2004 20:30:26

En effet, ça fait chaud au coeur...
Du coup, je vais me laisser aller à vous souhaiter d'ores et déjà une bonne année 2005 pleine de programmation et de ... (bugs à corriger ?)

signaler à un administrateur
Commentaire de mary85 le 21/07/2005 10:47:47

Bonjour,
J'aurais juste voulu savoir si vous n'aviez pas eu de souci à passer une liste box en paramètre. Je ne comprend pas, il m'est impossible de la passer en paramètre pour la procédure BarreDeDéfilement! Si quelqu'un à une idée... Merci

signaler à un administrateur
Commentaire de mary85 le 21/07/2005 11:09:12

Je m'excuse, j'ai fini par trouver : enfait il ne faut pas mettre de parenthèse et comme ça il n'affiche plus le message d'erreur "type de donnée incompatible".

BarreDeDefilement nom_de_la_liste

Voilà

signaler à un administrateur
Commentaire de PROGRAMMIX le 21/07/2005 11:54:00

Content de voir que la source n'est pas passée aux oubliettes...

Content de voir également que tu as pû trouver la solution tout seul ; c'est souvent le meilleur moyen d'apprendre.

Bonne continuation...

signaler à un administrateur
Commentaire de Alain Proviste le 21/07/2005 16:41:30 administrateur CS

ahah ah chaque fois que je vois un comment sur une vieille source, jsuis tout ému :')

signaler à un administrateur
Commentaire de RIGAGEIS le 11/10/2005 17:17:22

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

signaler à un administrateur
Commentaire de Zenain le 29/01/2007 10:07:10

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 !

signaler à un administrateur
Commentaire de PROGRAMMIX le 29/01/2007 16:55:44

Merci Zenain...
4 ans après, ça fait toujours plaisir.

signaler à un administrateur
Commentaire de henrimaselati le 07/02/2008 13:10:25

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

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,671 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.