Page 1 sur 1

[Résolu] Problème SortList()

Publié : mar. 05/avr./2011 17:18
par David02
Bonjour,

Je viens de trouve le code SortList() sauf que je ne comprends pas trop comment l'utiliser avec ListName()

Dans l'aide il donne ça:

Code : Tout sélectionner

SortList(ListName(), Mode [, Debut, Fin])
Je sais que Début et Fin sont facultatifs mais c'est ListName() qui me pose un problème.

Merci

Re: Problème SortList()

Publié : mar. 05/avr./2011 17:46
par falsam

Code : Tout sélectionner

NewList MaListe.s()

AddElement(MaListe())
MaListe() = "Pomme"
  
AddElement(MaListe())
MaListe() = "Banane"
  
AddElement(MaListe())
MaListe() = "Chou"
  
AddElement(MaListe())
MaListe() = "Abricot"
  
Debug "-Avant le tri"  
ForEach MaListe()
  Debug MaListe()
Next

SortList(MaListe(), #PB_Sort_Ascending )

Debug "-Aprés le tri"  
ForEach MaListe()
  Debug MaListe()
Next

Re: Problème SortList()

Publié : mar. 05/avr./2011 17:57
par David02
Sauf que dans mon programme, il n'y a rien dans la liste.
Je rajoute des éléments après.

Re: Problème SortList()

Publié : mar. 05/avr./2011 18:03
par case
tu peux pas trier quelque chose de vide ...

tu dois la remplir puis la trier pas dans l'autre sens...

Re: Problème SortList()

Publié : mar. 05/avr./2011 18:04
par falsam
David02 a écrit :Sauf que dans mon programme, il n'y a rien dans la liste.
Je rajoute des éléments après.
Chaque fois que tu inséres un élément tu lances le tri.

Re: Problème SortList()

Publié : mar. 05/avr./2011 19:01
par falsam
Au vu de tes postes précédents, je me demande si tu ne cherches pas à faire un tri d'un ListViewGadget ?

au cas ou ...... on ne sait jamais et puis ça peut servir.

L'exemple ci dessous montre comment saisir des éléments dans une liste et de trier cette liste dans le sens ascendant ou descendant en passant par une structure.

Chaque fois que tu saisiras un élément, la liste est triée dans le sens ascendant.

Code : Tout sélectionner

EnableExplicit
Enumeration
  #MainForm
  #Myliste
  #Element
  #Btn_Ajout
  #Btn_TriAscendant
  #Btn_TriDescendant
EndEnumeration

;Cette structure servira pour le tri 
Structure Liste
  Colonne1.s
EndStructure

Global Dim Myliste.Liste(0), CountElement.i=-1

;Procedure de tri
Procedure MyListeSort(Sens.i=#PB_Sort_Ascending)
  Protected i.i
  ;Trie de la structure
  SortStructuredArray(Myliste(), Sens, OffsetOf(Liste\Colonne1), #PB_Sort_String)
  
  ;Affichage de la liste à l'écran
  ClearGadgetItems(#Myliste)
  For i=0 To CountElement
    AddGadgetItem(#MyListe, -1, MyListe(i)\Colonne1)
  Next
  
EndProcedure

;Affichage de l'écran
Procedure MainFormShow()
  OpenWindow(#MainForm,0,0,500,400,"Trie d'une liste",#PB_Window_ScreenCentered |#PB_Window_SizeGadget | #PB_Window_SystemMenu)
  
  ListViewGadget(#Myliste,10,10,300,300)
  TextGadget(#PB_Any, 10, 320, 100, 20, "Element à ajouter")
  StringGadget(#Element, 10, 340, 300, 20,"")
  
  ButtonGadget(#Btn_Ajout, 320, 340, 80, 20, "Ajout")
  ButtonGadget(#Btn_TriAscendant, 320,10,80,20,"Tri Ascendant")
  ButtonGadget(#Btn_TriDescendant, 320,40,80,20,"Tri Descendant")
  
EndProcedure

MainFormShow()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_Ajout
          If Trim(GetGadgetText(#Element))<>""
            CountElement=CountElement+1
            ReDim Myliste(CountElement)

            ;Ajout de l'element dans la liste à l'écran
            AddGadgetItem(#Myliste, -1, GetGadgetText(#Element))
          
            ;Ajout de l'element dans la structure et reset du champ de saisie
            Myliste(CountElement)\Colonne1=GetGadgetText(#Element)
            SetGadgetText(#Element,"")
                    
            ;Trie de la liste
            MyListeSort()
          
          EndIf
          
        Case #Btn_TriAscendant
          MyListeSort(#PB_Sort_Ascending)
          
        Case #Btn_TriDescendant
          MyListeSort(#PB_Sort_Descending)
          
      EndSelect

    Case #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver
Cette exemple est tres facilement adaptable pour un ListIconGadget en ajoutant des colonnes à la structure.

Re: Problème SortList()

Publié : mar. 05/avr./2011 19:15
par David02
C'est exactement ça que je veux faire.
Désolé si je m'étais mal expliqué.

Je te remercie beaucoup.


Edit: J'ai réussi le tri.

Merci