OVH Cloud OVH Cloud

listbox

2 réponses
Avatar
Candy Raton
Bonjour,

Message déjà posté la semaine dernière, mais comme je ne le vois pas
apparaitre dans le groupe, je na sais pas si j'ai des réponses....
Voici le message :

Je 'bricole' sous VBA(excel), mais je pense que mon souci est plutôt général
VB.
(message posté sur ....fr.excel et sur .....fr.vb)

J'affiche des données de longueur très variable dans une listbox de
dimension fixe.
Peut-on, (et par quel moyen), faire un scrooling horizontal sur une listbox
?

Merci d'avance.

2 réponses

Avatar
X
Bonjour,

Je ne crois pas que la ListBox permettent en VB un déplacement
horizontal (peut être avec les API ?), pour ma part, je jongle entre un
texteBox et une ListBox; les fonctions du texBox en mettant les
enregistrement de longueur fixe (égal au plus long), permettent un choix de
ligne, qui ensuite est traité depuis la ListBox... Bref, peut être un peu
agricole, mais je n'ai trouvé que ça...

--
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"Candy Raton" a écrit dans le message de news:
448e6e87$
Bonjour,

Message déjà posté la semaine dernière, mais comme je ne le vois pas
apparaitre dans le groupe, je na sais pas si j'ai des réponses....
Voici le message :

Je 'bricole' sous VBA(excel), mais je pense que mon souci est plutôt
général
VB.
(message posté sur ....fr.excel et sur .....fr.vb)

J'affiche des données de longueur très variable dans une listbox de
dimension fixe.
Peut-on, (et par quel moyen), faire un scrooling horizontal sur une
listbox
?

Merci d'avance.





Avatar
RENAUD Eric
Si cela peut t'aider, voici un exemple pour une ComboBox
Private Const CB_SETDROPPEDWIDTH = &H160
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 Function GetComboMaxWidth() As Long
Dim ScaledWidth As Single, i As Long, ItemWidth As Single
Dim BorderWidth As Single

'Définit par défaut une liste à la largeur du combobox
ScaledWidth = Me.cboClients.Width

'Compte 8 pixels de bordure pour chaque item dans la liste
BorderWidth = Me.ScaleX(8, 3, Me.ScaleMode)

For i = 0 To cboClients.ListCount - 1
ItemWidth = Me.TextWidth(Me.cboClients.List(i)) + BorderWidth

'Récupère le maximum entre la taille actuelle et la taille de l'item
comparé
If ItemWidth > ScaledWidth Then
ScaledWidth = ItemWidth
End If
Next i

GetComboMaxWidth = Me.ScaleX(ScaledWidth, Me.ScaleMode, 3)
End Function

Private Sub SetComboListWidth(Combo As ComboBox, Width As Long)
SendMessage Combo.hwnd, CB_SETDROPPEDWIDTH, Width, ByVal 0&
End Sub


Private Sub Form_Load()
Combo1.AddItem "Un très très très très très très très très très long
texte"
Combo1.AddItem "Un très très très très très très très long texte"
Combo1.AddItem "Un très très très très très long texte"
Combo1.AddItem "Un très très très long texte"
Combo1.AddItem "Un très très très très très très très très très très
long texte"

SetComboListWidth Combo1, GetComboMaxWidth
End Sub

"Candy Raton" a écrit dans le message de news:
448e6e87$
Bonjour,

Message déjà posté la semaine dernière, mais comme je ne le vois pas
apparaitre dans le groupe, je na sais pas si j'ai des réponses....
Voici le message :

Je 'bricole' sous VBA(excel), mais je pense que mon souci est plutôt
général
VB.
(message posté sur ....fr.excel et sur .....fr.vb)

J'affiche des données de longueur très variable dans une listbox de
dimension fixe.
Peut-on, (et par quel moyen), faire un scrooling horizontal sur une
listbox
?

Merci d'avance.