Listbox multi colonnes

Soyez le premier à donner votre avis sur cette source.

Vue 23 198 fois - Téléchargée 1 773 fois

Description

une petite routine pour gerer le multi colonnes d un listbox et la roulette fonctionne aussi

Source / Exemple :


exemple avec 5 listbox list1(0),list1(1),.............

j ai mis les listbox a cheval pour cacher les barres de scroll  en trop

 voila le code-------------------------------------------------------------------------------------------------------------

'---------------------------la routine est dans un timer------------------------------------
'le list1(0).tag est a -00002-00002 dans les proprietés
'-------------------------- ne gere pas le multi liste selection  pour le moment-----------------------

'--------------------------remplir les listes----------200 lignes /5 colonnes---------------
Private Sub Form_Load()

For t = 0 To 200
For a = 0 To 4
List1(a).AddItem Str(t) + Str(a) + "<<=="
Next
Next

'--------------------------------------------------------------------------------------------
Timer1.Interval = 100 '<<==  ----si comme moi la roulette ne fonctionne pas bien dans en scrolling alors ceci est ma solution--------------------------

End Sub

Private Sub List1_Click(Index As Integer)
Call Timer1_Timer 'lier les listes
End Sub

Private Sub List1_Scroll(Index As Integer)
Call Timer1_Timer 'lier les listes
End Sub

Private Sub List1_Validate(Index As Integer, Cancel As Boolean)
Call Timer1_Timer 'lier les listes
End Sub

Private Sub Timer1_Timer()
'routine --lier les listes--
'nombre de colonnes-1
nc = 4
'------------------lecture variables---------------------------------------------------
K_li = Val(Left(List1(0).Tag, 6))
K_to = Val(Right(List1(0).Tag, 6))
'------------------valeur listindex <> des autres --------------------------------------
er = 0
For t = 0 To nc
If List1(t).ListIndex <> K_li And List1(t).ListIndex <> -1 Then
K_li = List1(t).ListIndex
er = 1: Exit For
End If
Next
'-------------------si <> il y a retablir les autres-------------------------------------
If er = 1 Then
For t = 0 To nc
 List1(t).ListIndex = K_li
Next
End If
'-------------------valeur topindex <> des autres----------------------------------------
er = 0
For t = 0 To nc
If List1(t).TopIndex <> K_to Then
K_to = List1(t).TopIndex
er = 1: Exit For
End If
Next
'-------------------si <> il y a retablir les autres-------------------------------------
If er = 1 Then
For t = 0 To nc
 List1(t).TopIndex = K_to
Next
End If
'-------------------si une active la selection (list1(0) maitre)-------------------------
If K_li >= 0 Then
For t = 1 To nc
 List1(t).Selected(K_li) = List1(0).Selected(K_li)
Next
End If
'-------------------sauvegarde les variables----------------------------------------------
List1(0).Tag = Format(K_li, "+0####")
List1(0).Tag = List1(0).Tag & Format(K_to, "+0####")

DoEvents
End Sub

Conclusion :


le zip donne un bon exemple

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
Si tu veux faire du multi-colonnes avec un seul listbox, je te propose d'aller jeter un oeil à cette adresse : http://www.vbfrance.com/code.aspx?id=26686.

J'y ai déposé une source synthétisant plusieurs possibilités d'utilisation de l'API sendmessage avec un listbox ou un combobox. Tu y découvriras la manière de réaliser du multi-colonnes à la manière d'Access.

Bonne continuation.
ScSami
Messages postés
1490
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
15 -
Bon, j'ai pas téléchargé la source mais selon ce que j'ai compris tu utilises plusieurs ListBox !!!!

Je n'ai qu'une question :
N'est-ce pas aberrant lorsqu'il existe les ListView ??????

Bonne prog.
cs_NoFutur
Messages postés
171
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Salut,

Je vais répondre à la question de ScSami :
Pour ceux qui ne veulent pas s'encombrer d'un ocx supplémentaire et qui ne sont pas trop exigeant ma fois ça peut toujours convenir qui sait :-)

@++
cs_BADGE
Messages postés
2
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
15 juillet 2005
-
Je trouve que le scroll "lag" trop à mon goût. Je dois avouer que j'ai déjà penser à cette solution, mais elle n'est pas esthétique. De plus, il n'est pas facilement transportable d'un projet à l'autre. Je préfère le ListView! Par contre, je n'ai pas trouvé comment changé l'ordre de tri en cliquant sur les en-têtes (headers) des colonnes.
cs_NoFutur
Messages postés
171
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Badge,

Si tu cherche à classer des infos dans une ListView va dans la sub "List1_ColumnClick" du controle ListView et copie ce bout de code : List1.SortKey = ColumnHeader.Index - 1 (List1 étant le nom d'occurence de ton ListView :-)

@plus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.