Aktuelle Zeit: 29.09.2020 14:02

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ListIconGadget sortieren
BeitragVerfasst: 13.09.2020 10:24 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Hallo zusammen,

ich zeige in ein ListIconGadget die sortierten Daten.
Nachträgliche werden Daten in der ListIconGadget gepakt

Wie kann ich die Daten sortieren?
Code:
If OpenWindow(0, 100, 100, 300, 300, "ListIcon sort", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0, 5, 5, 300, 150, "Col 1", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(0, 1, "Col 2", 100)
  ; Daten
  AddGadgetItem(0, -1, "A"+Chr(10)+"12 ")
  AddGadgetItem(0, -1, "C"+Chr(10)+"17")
   
  ; nachträgliche Daten
  AddGadgetItem(0, -1, "B"+Chr(10)+"18")
   
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf

Danke und Gruß
MarcelX

_________________
Win-10, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget sortieren
BeitragVerfasst: 13.09.2020 11:46 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Ich habe 35000 Daten und suche nach ein schnelle Lösung.
Ich habe 2 Lösungsansätze:
1) Daten vom ListIconGadget in eine Array schreiben, mit SortStructuredArray sortieren und im ListIconGadget schreiben

2) Daten in eine DB (:memory:) schrieben und lesen mit "ORDER BY" und im ListIconGadget schreiben

Gibt es andere Möglichkeiten?

_________________
Win-10, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget sortieren
BeitragVerfasst: 13.09.2020 13:11 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
35000 Datenzeilen in einem ListIconGadget sind ganz schöner Overkill. Für solche Datenmengen ist ein ListIconGadget nicht geeignet. Ich kann mir vorstellen, dass das ziemlich langsam ist, oder?

Aber zur eigentliche Frage:
Generell würde ich die Daten immer in einem Array oder einer LinkedList halten und mit SetGadgetItemData() für jede Zeile den Pointer zu den Originaldaten speichern, also zum Element im Array oder der LinkedList. Das ist praktisch, wenn man nach einem Klick auf ein Element in der Liste schnell auf die Originaldaten zugreifen will. Außerdem bietet es die Möglichkeit mehr zu jeder Zeile zu speichern als man im ListIconGadget als Spalten darstellt.
Zum Sortieren kann man dann ganz einfach mit SortStructuredArray oder SortStructuredList die Original-Daten sortieren. Und statt das ListIconGadget danach zu leeren und neu zu füllen, kann man einfach den Inhalt aller Zeilen mit SetGadgetItemText() ersetzen, denn das geht schneller als 35000 mal AddGadgetItem() aufzurufen.

Mit der Datenbankmethode hast du möglicherweise bessere Sortiermöglichkeiten, aber dann würde ich die Daten ebenfalls von Anfang an dort reinschreiben und das nicht nur als temporäre Lösung zum Sortieren nutzen.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget sortieren
BeitragVerfasst: 13.09.2020 21:11 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Danke NicTheQuick für deine Rückmeldung und Anregung.
Die Daten sind aus eine Datenbank und können geändert, gelöscht oder neu definiert werden und nach Abfrage zurück in der DB gespeichert werden.
Die Daten in eine List abzulegen und mit SortStructuredList sortieren und mit SetGadgetItemText() ersetzen müsste so funktionieren.

_________________
Win-10, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 16 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye