begin process at 2012 02 13 03:14:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > AJOUTER UNE SCROLLBAR HORIZONTALE A UNE LISTBOX

AJOUTER UNE SCROLLBAR HORIZONTALE A UNE LISTBOX


 Information sur la source

Note :
9,3 / 10 - par 10 personnes
9,30 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :scrollbar, horizontale, listbox Niveau :Initié Date de création :18/05/2001 Vu :10 861

Auteur : Neo.balastik

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Dans VB, le contrôle ListBox possède une barre de défilement verticale mais pas horizontale.  Ce qui peut être très embêtant si le texte inclus dans la liste est plus long que la taille du contrôle.  Voici comment ajouter une barre horizontale...  (A coller dans un module).

Source

  • 'DECLARATION API
  • Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
  • Declare Function GetSystemMetrics Lib "user32" _
  • (ByVal nIndex As Long) As Long
  • Public Declare Function SendMessage Lib _
  • "user32" Alias "SendMessageA" _
  • (ByVal hwnd As Long, _
  • ByVal wMsg As Long, _
  • ByVal wParam As Long, _
  • lParam As Any) As Long
  • 'DECLARATION CONSTANTES
  • Public Const LB_GETHORIZONTALEXTENT = &H193
  • Public Const LB_SETHORIZONTALEXTENT = &H194
  • ublic Const DT_CALCRECT = &H400
  • Public Const SM_CXVSCROLL = 2
  • 'DECLARATION TYPE
  • Public Type RECT
  • Left As Long
  • Top As Long
  • Right As Long
  • Bottom As Long
  • End Type
  • Public Sub ApplyScrollBar(fForm As Form, fList As ListBox)
  • Dim c As Long
  • Dim rcText As RECT
  • Dim newWidth As Long
  • Dim itemWidth As Long
  • Dim sysScrollWidth As Long
  • fForm.Font.Name = fList.Font.Name
  • fForm.Font.Bold = fList.Font.Bold
  • fForm.Font.Size = fList.Font.Size
  • sysScrollWidth = GetSystemMetrics(SM_CXVSCROLL)
  • For c = 0 To fList.ListCount - 1
  • Call DrawText(fForm.hdc, (fList.List(c)), -1&, rcText, DT_CALCRECT)
  • itemWidth = rcText.Right + sysScrollWidth
  • If itemWidth >= newWidth Then
  • newWidth = itemWidth
  • End If
  • Next
  • Call SendMessage(fList.hwnd, LB_SETHORIZONTALEXTENT, newWidth, ByVal 0&)
  • End Sub
'DECLARATION API
Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long

Declare Function GetSystemMetrics Lib "user32" _
  (ByVal nIndex As Long) As Long

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

'DECLARATION CONSTANTES
Public Const LB_GETHORIZONTALEXTENT = &H193
Public Const LB_SETHORIZONTALEXTENT = &H194
ublic Const DT_CALCRECT = &H400
Public Const SM_CXVSCROLL = 2

'DECLARATION TYPE
Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Public Sub ApplyScrollBar(fForm As Form, fList As ListBox)

   Dim c As Long
   Dim rcText As RECT
   Dim newWidth As Long
   Dim itemWidth As Long
   Dim sysScrollWidth As Long
   
   fForm.Font.Name = fList.Font.Name
   fForm.Font.Bold = fList.Font.Bold
   fForm.Font.Size = fList.Font.Size
   
   sysScrollWidth = GetSystemMetrics(SM_CXVSCROLL)
   
   For c = 0 To fList.ListCount - 1
   
      Call DrawText(fForm.hdc, (fList.List(c)), -1&, rcText, DT_CALCRECT)
      itemWidth = rcText.Right + sysScrollWidth
         
      If itemWidth >= newWidth Then
         newWidth = itemWidth
      End If
      
   Next
   
   Call SendMessage(fList.hwnd, LB_SETHORIZONTALEXTENT, newWidth, ByVal 0&)
   
End Sub 

 Conclusion

Utilisation:
ApplyScrollBar Me, Me.List1


 Sources du même auteur

Source avec Zip Source avec une capture TASKBAR INFO
Source avec Zip Source avec une capture LISTE DES DRIVERS ODBC ET DSN ASSOCIES (MAJ)
Source avec Zip Source avec une capture ANIMER UNE FENÊTRE AVEC ANIMATEWINDOW (SANS L'EFFET NOIR DAN...
Source avec Zip Source avec une capture TAILLE D'UN RÉPERTOIRE - 2 MÉTHODES
Source avec Zip Source avec une capture LISTE DES DSN UTILISATEUR

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PLANCHE CONTACT SOUS WORD par Le Pivert
Source avec Zip Source .NET (Dotnet) L'ÉVÉNEMENT SCROLL D'UNE LISTBOX DANS VB.NET par 310
Source avec Zip Source avec une capture Source .NET (Dotnet) SHELLVIEW EN VB.NET par Le Pivert
Source avec Zip Source avec une capture GESTIONNAIRE ASSISTANT PROJET VBP BAS par Galactus13
LISTBOX AVEC BARRE HORIZONTALE par acoi

Commentaires et avis

Commentaire de Death Angel le 01/06/2004 09:43:06

c'est dommage, sa n'a pas l'air de marcher sous XP

Commentaire de occhipin le 09/07/2004 10:12:27

Excellent ...
Marche impeccable (même testé sous XP !!!) et très facil à utiliser, tout est dit  !
Bon jmet un pti 10 ! Merci

Commentaire de Douns le 24/09/2004 17:41:03

C'est tout simplement génial, merci beaucoup!

Commentaire de Neo.balastik le 24/09/2004 21:02:58

Après plus de 3 ans, ca fait toujours des heureux ;O)

Commentaire de sosodef88 le 09/08/2005 12:20:18

ne marche pas chez moi (winxp) :s

Commentaire de sosodef88 le 09/08/2005 12:31:10

pardon j'ai parler trop vite ca fonctionne mais il ne faut pas le mettre au démarrage de l'appli

Commentaire de ProutLeGus le 07/10/2005 08:51:11

Merçi pour l'exemple, ça fonctionne nickel. Mais, il faut que le form soit deja chargé. Donc, dans le FORM_LOAD(), ça ne fonctionne pas ou il faut faire Me.Show avant.

Commentaire de geek4never le 04/07/2006 14:51:41

merci!!

Commentaire de engl le 16/02/2007 11:03:11

Bonjour, j'ai essayé sous excel avec les userforms et ça ne marche pas car ce ne sont pas les mêmes déclarations.

Commentaire de Tioneb le 23/03/2007 14:24:23

Merci pour cette source; ça marche très bien sous XP Pro (il faut exécuter ce code à chaque fois que vous modifiez la listbox, pour mettre à jour). Et la scrollbar n'apparait que si une ligne est plus large que le controle.
10/10

Commentaire de djtrefle le 06/07/2008 11:01:15

Merci encore pour cette source qui aurait pu etre parfaite pour moi mais malheureusement ne marche pas quand il y a des tabulations dans le texte ...

Commentaire de PCPT le 06/07/2008 15:54:58 administrateur CS

il suffit d'utiliser l'API ShowScrollBar avec l'argument SB_BOTH

Commentaire de drum_ab le 16/02/2010 15:04:29

je déterre le sujet
chez moi (xp pro) ca ne fonctionne pas, ca me met le message :

Erreur de compilation
Cet argument n'est pas facultatif

A l'instruction :

ApplyScrollBar Me
Me.List1

quelqu'un à une réponse?
j'ai bien une listbox du nom de list1 et j'ai bien copié le code ci-dessus.

Moi rien comprendre... Help!

    

Commentaire de PCPT le 16/02/2010 15:06:54 administrateur CS

ApplyScrollBar Me, List1

Commentaire de drum_ab le 16/02/2010 15:15:02

Merci beaucoup !

En effet c'est mieux comme ca...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ScrollBar Horizontale avec listbox [ par dedebatou ] Bonjour, je cherche à avoir une scrollBar horizontale dans une listbox pour pouvoir visualiser l'intégralité de chaines de caractères qui sont trop lo VBA : SUPPRIMER LE SCROLLBAR VERTICAL D'UN CONTROLE LISTBOX [ par SR2 ] Je cherche le moyen en VBA de neutraliser une scrollbar  vertical d'un contrôle listboxMais attention : limiter le nombre de ligne dans la l Scrollbar et FileListBox [ par i2c03a ] J'utilise un FileListBox et je souhaiterais pouvoir gérer l'espace horizontale via un Scrollbar. en effet le FileListBox gère le scrollbar v Utilisation ActiveX Scrollbar ? [ par Cako19 ] Bonjour,Je souhaiterais créer pour une listbox une scrollbar différente des scrollbars par defaut de Windows.Pour cela, je voulais utiliser Listbox sans scrollbar plzzz [ par Renus02 ] bonjour,voila mon probleme est le suivant ...je commence en precisant que je travail rarement en vb donc je suis assez ...ignorant :D..est il possible scrollbar listbox & tableau [ par DraaFil ] Bonjour a tous, j'ai deux question differente. 1- comment supprimer le scrollbar d'un listbox? 2- j'ai un tableau (dim tabl(10) as string), je voud bonjour a tous [ par gotham1 ] j'avoue avoir beaucoup de mal a programmer sous vba mais il faut bien commencer un jour alors pourkoi pas aujourd'huije voudrais reussir a supprimer l Listbox & scrollBar [ par BasicInstinct ] 'lutcomment supprimer l'apparition de la scrollbar dans les listes ?Merci Pb RichTextBox et ScrollBar horizontale (Diff VB5 et VB6) [ par dox ] Bonjour à tous,Il existe une différence de fonctionnement entre l'ocx richtx32.ocx de vb5 et vb6. En effet avec la version 6, lorsque je se suis en mo listbox et scrollbar [ par poucin ] Bonjour,J'aimerais savoir s'il est possible en VB.NET de faire en sorte que le scrollbar d'une listbox aille tjs a la fin du control.J'espere que j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales