begin process at 2010 02 09 23:05:21
  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 :8 789

Auteur : Neo.balastik

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
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 avec une capture Source .NET (Dotnet) FAIRE LA DIFFÉRENCE ENTRE UNE ADRESSE EMAIL QUI EXISTE D'UNE... par lesinfosdugeek
ENVOYER UN MESSAGE SUR SON COMPTE TWITTER par lesinfosdugeek
Source avec Zip Source avec une capture TROUVER LES CLÉS DE REGISTRE QUI CHANGENT par Flocreate
Source avec Zip IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE par marco62118
Source avec Zip TOUTES LES RÉSOLUTIONS D'ÉCRAN ET TAILLE MAXI DE LA FORM AUD... par marco62118

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) COMPARER_2FICHIERS_TEXTE par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) SURVEILLER_CHANGEMENT_REGISTRE par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) CONVERTIR FORMAT IMAGE par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) MODIFIER_RÉSOLUTION_PPP_IMAGE par Le Pivert
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

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

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,889 sec (4)

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