Modifier la position d'un élément dans un ListIconGadget()
Publié : ven. 04/nov./2005 13:10
Un petit truc que j'avais fait pour un prog, (que j'ai abandonné depuis
)
Comment modifier la position d'un élément dans un ListIconGadget().
(Du genre "Monter d'un cran", "Descendre d'un cran", etc...)
Bon, c'est du niveau débutant, mais ça peut toujours être utile.

Comment modifier la position d'un élément dans un ListIconGadget().
(Du genre "Monter d'un cran", "Descendre d'un cran", etc...)
Bon, c'est du niveau débutant, mais ça peut toujours être utile.
Code : Tout sélectionner
; Modifier la position d'un élément dans une liste
; Auteur : Chris
; Os : Tous
#Window = 0
Enumeration
#List
#Btn_Up
#Btn_Down
EndEnumeration
; Création d'une liste pour stocker la position des éléments
NewList ListOrder.l()
; Pour l'exemple, on la remplit avec 10 éléments
For i = 1 To 10
AddElement(ListOrder()) : ListOrder() = i
Next
; Création de la fenêtre et des gadgets
If OpenWindow(#Window,100,100,310,210,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ListIcon")
If CreateGadgetList(WindowID())
ListIconGadget(#List,5,5,260,200,"Test",200,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
ButtonGadget(#Btn_Up, 270, 60, 35, 30, "Haut")
ButtonGadget(#Btn_Down, 270, 100, 35, 30, "Bas")
EndIf
EndIf
; Affichage des éléments dans la ListIcon
ForEach ListOrder()
AddGadgetItem(#List, -1, "Ligne "+Str(ListOrder()))
Next
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
; Sélection d'un élément dont on veut modifier la position
Case #List
If EventType() = #PB_EventType_LeftClick
Selected = GetGadgetState(#List)
EndIf
Case #Btn_Up
; On veut remonter l'élément sélectionné
If Selected > 0 ; Si il n'est pas déjà le premier
SelectElement(ListOrder(), Selected)
*OldPos = @ListOrder() ; On récupère son adresse
PreviousElement(ListOrder())
*NewPos = @ListOrder() ; On récupère l'adresse de celui qui le précède
; On échange les deux éléments
SwapElements(ListOrder(), *OldPos, *NewPos)
; Et on réaffiche le tout
ClearGadgetItemList(#List)
ForEach ListOrder()
AddGadgetItem(#List, -1, "Ligne "+Str(ListOrder()))
Next
; On sélectionne l'élément à sa nouvelle position
Selected -1 : SetGadgetState(#List, Selected)
EndIf
Case #Btn_Down
; On veut descendre l'élément sélectionné
If Selected < CountGadgetItems(#List)-1 ; Si il n'est pas le dernier
SelectElement(ListOrder(), Selected)
*OldPos = @ListOrder() ; On récupère son adresse
NextElement(ListOrder())
*NewPos = @ListOrder() ; On récupère l'adresse de celui qui le suit
; On échange les deux éléments
SwapElements(ListOrder(), *OldPos, *NewPos)
; Et on réaffiche le tout
ClearGadgetItemList(#List)
ForEach ListOrder()
AddGadgetItem(#List, -1, "Ligne "+Str(ListOrder()))
Next
; On sélectionne l'élément à sa nouvelle position
Selected +1 : SetGadgetState(#List, Selected)
EndIf
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit
End