OVH Cloud OVH Cloud

question sur listobox

3 réponses
Avatar
dav
comment monter ou descendre un élément dans un controle ListBox
et je voudrais également insérer une ligne blanche dans un listbox,
entre deux éléments, comment procéder ?
merci,
dav

3 réponses

Avatar
gedeon
bonjour,

et je voudrais également insérer une ligne blanche dans un listbox,


la methode qui te permet d'intégrer une ligne vide dans ton listbox est la
même qu'utilisée pour intégrer une ligne non vide.
monList.AddItem ""

comment monter ou descendre un élément dans un controle ListBox


Il ne me semble pas possible de modifier la position (listindex) d'un item
sans réinitialiser la liste.
Il est peut être possible de traiter la liste des items à insérer avant de
les positionner dans ton listbox (a explorer)

tu peux aussi essayer d'utiliser le listView qui sera plus performant dans
l'ensemble des propriétés et méthodes exposées.




"dav" a écrit dans le message de news:
41710cd0$0$26724$
comment monter ou descendre un élément dans un controle ListBox
et je voudrais également insérer une ligne blanche dans un listbox, entre
deux éléments, comment procéder ?
merci,
dav


Avatar
François Picalausa
Hello,

Tu peux essayer les procédures suivantes (non optimisées):
Private Sub ItemUp(List As ListBox, Item As Long, Optional FullLoop As
Boolean, Optional UpdateSelection As Boolean = True)
Dim Text As String, Data As Long
If Item > 0 Then
'Swap des textes
Text = List.List(Item)
List.List(Item) = List.List(Item - 1)
List.List(Item - 1) = Text

'Swap des data
Data = List.ItemData(Item)
List.ItemData(Item) = List.ItemData(Item - 1)
List.ItemData(Item - 1) = CLng(Data)

'Mise à jour de la sélection
If UpdateSelection Then
List.ListIndex = Item - 1
End If
ElseIf (Item = 0) And FullLoop Then
'Copie de l'item 0 en fin de liste
List.AddItem List.List(0)
List.ItemData(List.NewIndex) = List.ItemData(0)

'Suppression de l'item 0
List.RemoveItem 0

'Mise à jour de la sélection
If UpdateSelection Then
List.ListIndex = List.ListCount - 1
End If
End If
End Sub

Private Sub ItemDown(List As ListBox, Item As Long, Optional FullLoop As
Boolean, Optional UpdateSelection As Boolean = True)
Dim Text As String, Data As Long
If Item > -1 And Item < List.ListCount - 1 Then
'Swap des textes
Text = List.List(Item)
List.List(Item) = List.List(Item + 1)
List.List(Item + 1) = Text

'Swap des data
Data = List.ItemData(Item)
List.ItemData(Item) = List.ItemData(Item + 1)
List.ItemData(Item + 1) = CLng(Data)

'Mise à jour de la sélection
If UpdateSelection Then
List.ListIndex = Item + 1
End If
ElseIf (Item = List.ListCount - 1) And FullLoop Then
'Copie de l'item de fin de liste en 0
List.AddItem List.List(List.ListCount - 1), 0

'Suppression de l'item de fin de liste
List.ItemData(0) = List.ItemData(List.ListCount - 1)
List.RemoveItem List.ListCount - 1

'Mise à jour de la sélection
If UpdateSelection Then
List.ListIndex = 0
End If
End If
End Sub

Pour insérer une ligne vide:
ListBox.AddItem "", position

--
François Picalausa

"dav" a écrit dans le message de news:
41710cd0$0$26724$
comment monter ou descendre un élément dans un controle ListBox
et je voudrais également insérer une ligne blanche dans un listbox,
entre deux éléments, comment procéder ?
merci,
dav


Avatar
dav
François Picalausa a écrit :

Hello,

Tu peux essayer les procédures suivantes (non optimisées):
Private Sub ItemUp(List As ListBox, Item As Long, Optional FullLoop As
Boolean, Optional UpdateSelection As Boolean = True)




Pour insérer une ligne vide:
ListBox.AddItem "", position




Impec !!!!!
je fais : ItemUp List1, List1.ListIndex
et ça marche....

merci infiniement à François.
dav