ListIconGadget sortieren

Anfängerfragen zum Programmieren mit PureBasic.
Freshi
Beiträge: 7
Registriert: 03.02.2005 15:24

ListIconGadget sortieren

Beitrag von Freshi »

Hallöle,

kurze (und vielleicht doofe) Frage:
Ich möchte ein ListIconGadget beim clicken auf eine Spaltenüberschrift nach dieser Spalte gerne sortieren.
Welchen Event muss ich denn da abfragen um den Click auf die Spaltenüberschrift festzustellen?! :?:

Grüße,
Freshi
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: ListIconGadget sortieren

Beitrag von Danilo »

Freshi hat geschrieben:Ich möchte ein ListIconGadget beim clicken auf eine Spaltenüberschrift nach dieser Spalte gerne sortieren.
Welchen Event muss ich denn da abfragen um den Click auf die Spaltenüberschrift festzustellen?! :?:
Da das nicht mit wenigen Worten zu erklären ist, hier mal
ein Verweis auf einen Code der das zeigt:
http://www.purearea.net/pb/CodeArchiv/G ... tArrows.pb

Am besten Du lädst Dir gleich das ganze CodeArchiv runter,
vielleicht findest Du noch mehr solche Codes zum ListIconGadget. ;)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Wisimita
Beiträge: 13
Registriert: 03.10.2005 13:07

Nachfrage zur Sortierung

Beitrag von Wisimita »

Hallo Danilo,

ich bin ganz neu hier im Forum.
Mit der oben vorgestellten Sortiermethode habe ich auch schon für einen Anfänger gute Erfolge erzielt und diese Routine in ein Programm von mir eingefügt.
Es werden aber nicht alle 10 Spalten auf- oder absteigend sortiert, sondern nur jeweils 2.
In einer einfachen Form würde es mir reichen, wenn die 10 Spalten von links nach rechts absteigend sortiert würden, also wenn in einer Spalte eine Zahl mehrmals steht, dass in den folgenden Spalten ebenfalls sortiert wird, hier einmal als Beispiel mit 5 Spalten:

Code: Alles auswählen

100 100 99  23 12
100   99 76  12   4
100   16 14  13 10
 60  121 88    3   2
 60    6 99  12   9
usw.
Das dürfte für Euch Profis verhältnismäßig leicht sein und ich bin sicher, dass Ihr mir helfen könnt.
Geht das aber auch, wenn ich in der Hauptsache nach der dritten oder einer anderen Spalte sortieren will, dass dann alle anderen Spalten von links nach rechts ebenfalls wie gewünscht sortiert werden?

Viele Grüsse
Wisimita
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Danilo wirst du hier wohl nicht mehr antreffen, das Thema ist mehrere Monate alt und er treibt sich hier nur noch selten, wenn überhaupt, rum...
Wisimita
Beiträge: 13
Registriert: 03.10.2005 13:07

Beitrag von Wisimita »

Hallo Sunny,
ich habe Danilo nur angesprochen, weil er auf dieses Thema weiter oben bereits geantwortet hatte.
Mir ist es also ebenso Recht, wenn mir jemand anderes helfen kann!
Gruß
Wisimita
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Probier es mal damit:
http://www.purearea.net/pb/download/use ... LVSORT.zip

Funktionier bei mir recht gut.
Wisimita
Beiträge: 13
Registriert: 03.10.2005 13:07

Beitrag von Wisimita »

Thorsten1867 hat geschrieben:Probier es mal damit:
http://www.purearea.net/pb/download/use ... LVSORT.zip

Funktionier bei mir recht gut.
Hallo Thorsten,

als blutiger Anfänger habe ich eine Weile gebraucht, bis ich die Routinen überhaupt ans Laufen bekommen habe.
Wenn ich alles richtig gemacht habe, ist das aber nicht das, was ich suche.
Ich möchte die Daten in einem ListIcon für alle Spalten reihenweise sortiert haben, wenn es nicht anders geht, dann abwärts von links nach rechts, also so, dass die gesamte Zeile mit allen Spalten richtig einsortiert wird. Das gesamte ListIcon besteht aus 10 Spalten mit 9 Ganzzahlen und einer Spalte mit Prozentzahlen.
Beispielweise bei Excel ist so eine Sortierung kein Problem.
Vielleicht kann mir jemand helfen, wenn möglich aber, für Anfänger verständlich.

Gruß
Wisimita
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Das mit den einzelnen Spalten muss ich übersehen haben. Zeilenweise wäre kein Problem.
Solange es ein Klick in den ListIconHeader sein muss, muss ich passen, da eine solche Abfrage schon sehr in die Internas geht (WindowsCallback).
Mit entsprechenden Buttons stattdessen, müsste das Problem lösbar sein.
Wisimita
Beiträge: 13
Registriert: 03.10.2005 13:07

Beitrag von Wisimita »

Thorsten1867 hat geschrieben:Das mit den einzelnen Spalten muss ich übersehen haben. Zeilenweise wäre kein Problem.
Solange es ein Klick in den ListIconHeader sein muss, muss ich passen, da eine solche Abfrage schon sehr in die Internas geht (WindowsCallback).
Mit entsprechenden Buttons stattdessen, müsste das Problem lösbar sein.
Hallo Thorsten,
danke für die schnelle Antwort!
Vergessen wir erst einmal meine Idee mit dem Klick auf die einzelnen Spalten.
Es würde mir reichen, wenn zeilenweise richtig sortiert werden könnte, und zwar abwärts.
Beispiel:

100 110 200 400 155 301
100 220 100 290 555 222
100 110 200 401 168 229

Eine richtige Sortierung sähe so aus:
100 220 100 290 555 222
100 110 200 401 168 229
100 110 200 400 155 301
In Spalte 1 sind alle Zahlen gleich groß, in der ersten Zeile ist die Zahl in der zweiten Spalte größer als die beiden anderen, Zeile 2 ist in Spalte 4 größer als in der dritten Zeile.
Wenn so sortiert werden kann, ist das vollkommen ausreichend.

Gruß
Wisimita
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Zum Sortieren müsste man das ListIconGadget auslesen und in verschiede Arrays schreiben:

Code: Alles auswählen

Dim Spalte0(2) : Dim Spalte1(2) : Dim Spalte2(2) : .......
For r = 0 To 2
Spalte0(r) = GetGadgetItemText(#MyList, r, 0)
Spalte1(r) = GetGadgetItemText(#MyList, r, 1)
Spalte2(r) = GetGadgetItemText(#MyList, r, 2)
........
Next r
Dann könnte man die Arrays außer Spalte1() sortieren und in die Liste zurückschreiben (vorher natürlich leeren).

Code: Alles auswählen

SortArray(Spalte1(), 1) : SortArray(Spalte2(), 0) : .......

Code: Alles auswählen

ClearGadgetItemList(#MyList)
For r = 0 To 2
AddGadgetItem(#MyList,-1,Spalte0(r)+Chr(10)+Spalte1(r)+Chr(10)+Spalte2(r)+........)
Next r
Dim Spalte0(0) : Dim Spalte1(0) : .......
Ich hoffe, ich abe auf die Schnelle keine Fehler eingebaut. :mrgreen:
Antworten