[Résolu] Problème SortList()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

[Résolu] Problème SortList()

Message 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
Dernière modification par David02 le mer. 06/avr./2011 10:02, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème SortList()

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Problème SortList()

Message par David02 »

Sauf que dans mon programme, il n'y a rien dans la liste.
Je rajoute des éléments après.
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Problème SortList()

Message par case »

tu peux pas trier quelque chose de vide ...

tu dois la remplir puis la trier pas dans l'autre sens...
ImageImage
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème SortList()

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème SortList()

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Problème SortList()

Message 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
Répondre