Bonjour,
j'aimerais savoir comment faire pour avoir une scroll bar horizontale sur une listbox car lorsque un item d'une liste est trop long on ne peut pas tout lire......
Merci pour votre aide!!!!
Bonjour,
j'aimerais savoir comment faire pour avoir une scroll bar horizontale sur une listbox car lorsque un item d'une liste est trop long on ne peut pas tout lire......
Merci pour votre aide!!!!
Voila ce que j'appelerais un classique de l'utilisation des API
8)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Private 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 Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long 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_GETHORIZONTALEXTENT = &H193 Private Const LB_SETHORIZONTALEXTENT = &H194 Private Const DT_CALCRECT = &H400 Private Const SM_CXVSCROLL = 2 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Sub ApplyScrollBar(MaFeuille As Form, MaListe As ListBox) Dim compteur As Long Dim rcText As RECT Dim Nlargeur As Long Dim LargText As Long Dim sysScrollWidth As Long sysScrollWidth = GetSystemMetrics(SM_CXVSCROLL) For compteur = 0 To MaListe.ListCount - 1 Call DrawText(MaFeuille.hdc, (MaListe.List(compteur)), -1&, rcText, DT_CALCRECT) LargText = rcText.Right + sysScrollWidth If itemWidth >= Nlargeur Then Nlargeur = LargText End If Next compteur Call SendMessage(MaListe.hwnd, LB_SETHORIZONTALEXTENT, Nlargeur, ByVal 0&) End Sub et la fonction s'appelle ApplyScrollBar Me, List1
Bonjour, j'ai essayé le code de bidou, sa marche super. A noter un petit oubli de translation :
a remplacer par
Code : Sélectionner tout - Visualiser dans une fenêtre à part If itemWidth >= Nlargeur Then
Code : Sélectionner tout - Visualiser dans une fenêtre à part If LargText >= Nlargeur Then
Et pour empecher les scrollbar d'apparaitre à tous moment il y a qqchose???
Pour enlever la ScrollBar verticale
et appeler la fonction comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Declare Function ShowScrollBar Lib "user32" (ByVal hwnd As Long, ByVal wBar As Long, ByVal bShow As Long) As Long Private Const SB_VERT = 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShowScrollBar List1.hwnd, SB_VERT, False
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager