Page 1 sur 1
[RESOLU] Trier une listIconGadget
Publié : mar. 26/déc./2017 15:52
par omega
Bonjour à tous et joyeux Noel !
Ma question est très simple: Y a t-il un moyen de trier une listIconGadget? Jusqu'à présent, j'utilise une table (sqlite) pour résoudre ce problème ça marche mais c'est très lent ( il y a plus de 9500 lignes sur le grid).
Merci
Re: Trier une listIconGadget
Publié : mar. 26/déc./2017 17:09
par Micoute
Voici un exemple que m'avais fourni falsam, si ça peut faire ton bonheur c'est l'époque des étrennes.
Code : Tout sélectionner
Structure mesDonnees
code$
tva$
produit$
EndStructure
Global Dim d.mesDonnees(2)
#WindowWidth = 500
#WindowHeight = 305
Procedure Trier()
For k=0 To 2
AddGadgetItem(5,-1,d(k)\code$+#LF$+d(k)\tva$+#LF$+d(k)\produit$)
Next k
EndProcedure
Procedure TrierCode()
SortStructuredArray(d(),#PB_Sort_Ascending,OffsetOf(mesDonnees\code$),#PB_String)
Trier()
EndProcedure
Procedure TrierTVA()
SortStructuredArray(d(),#PB_Sort_Ascending,OffsetOf(mesDonnees\tva$),#PB_String)
Trier()
EndProcedure
Procedure TrierArticle()
SortStructuredArray(d(),#PB_Sort_Ascending,OffsetOf(mesDonnees\produit$),#PB_String)
Trier()
EndProcedure
Procedure Vider()
ClearGadgetItems(5)
EndProcedure
If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "PureBasic - Démonstration Gadget Avancée", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
ButtonGadget(1, 50, 270, 100, 20, "Trier par code")
ButtonGadget(2, 200, 270, 100, 20, "Trier par TVA")
ButtonGadget(3, 350, 270, 100, 20, "Trier par produit")
ListIconGadget(5, 3, 50, 500, 200, "CODE BARRE", 131)
AddGadgetColumn(5, 1, "TVA", 200)
AddGadgetColumn(5, 2, "PRODUIT", 90)
Restore produits
For k=0 To 2
Read.s d(k)\code$
Read.s d(k)\tva$
Read.s d(k)\produit$
Next k
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
CloseWindow(0)
End
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Vider()
TrierCode()
Case 2
Vider()
TrierTVA()
Case 3
Vider()
TrierArticle()
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
DataSection
produits:
Data.s "5601009345678","19.6%","Coca-cola"
Data.s "5601000000008","19.6%","Vin"
Data.s "5601009343333","5.5%","Beurre"
EndDataSection
Re: Trier une listIconGadget
Publié : mar. 26/déc./2017 17:38
par omega
Non, ça n'a pas marché à mon niveau je suis en train de voir la source de l'erreur -(il s'est bloqué et le grid est vide !)
Re: Trier une listIconGadget
Publié : mar. 26/déc./2017 23:12
par omega
Voici un code de Falsam, il me l'a donné un jour et je l'ai complètement oublié. Il marche bien et répond parfaitement à mon attente. If faut forcément passer par là pour trier ensuite un grid.
Merci
Code : Tout sélectionner
;Tri / Sort structure
Structure Potager
Cle.s
Nom.s
Famille.s
EndStructure
NewList MonPanier.Potager()
AddElement(Monpanier())
MonPanier()\Cle="010910"
MonPanier()\Nom="Pomme"
MonPanier()\Famille="Fruit"
AddElement(Monpanier())
MonPanier()\Cle="090801"
MonPanier()\Nom="Concombre"
MonPanier()\Famille="Legume"
AddElement(Monpanier())
MonPanier()\Cle="010909"
MonPanier()\Nom="Peche"
MonPanier()\Famille="Fruit"
AddElement(Monpanier())
MonPanier()\Cle="021010"
MonPanier()\Nom="Tomate"
MonPanier()\Famille="Legume"
AddElement(Monpanier())
MonPanier()\Cle="010710"
MonPanier()\Nom="Abricot"
MonPanier()\Famille="Fuit"
;Tri / Sort Structu
SortStructuredList(MonPanier(), #PB_Sort_Ascending|#PB_Sort_NoCase, OffsetOf(Potager\Nom), #PB_Sort_String)
;Test
ForEach(MonPanier())
Debug Monpanier()\Nom
Next