Seite 2 von 2
Verfasst: 09.10.2007 22:17
von Fluid Byte
Kleiner Wink mit dem Zaunpfahl:
Gonzal hat diese LIB programmiert. Dann auch
Gonzal zu fragen ist nicht ganz abwegig, nicht wahr?
Also wie ist jetzt der Stand der Dinge? Stehts in der Doku oder geht es nicht?
Verfasst: 09.10.2007 22:47
von scholly
Fluid Byte hat geschrieben:Kleiner Wink mit dem Zaunpfahl:
Gonzal hat diese LIB programmiert. Dann auch Gonzal zu fragen ist nicht ganz abwegig, nicht wahr?
Lieber
Fliud,der
Gonzal schreibt sich
gnozal.
Also wie ist jetzt der Stand der Dinge? Stehts in der Doku oder geht es nicht?
Ich habe in der Doku nichts entsprechendes gefunden, deswegen hab ich doch gefragt !
Es kann aber sein, daß ich mal wieder eine(n) Hinweis/Parameter/Bemerkung nicht (richtig) verstanden habe oder bei der Verwendung der richtigen Suchbegriffe (die ich oft nicht treffe, deswegen der Hinweis auf mein
Suchschwäche) hier im deutschen oder drüben im englischen Forum eine
auch aus meiner Sicht einfache Lösung per PureLVSORT gefunden hätte.
Da nur Deine PLVS-unabhängige Lösung als Antwort kam, gehe ich davon aus, daß es mit PLVS nicht so einfach geht und damit ist das 'Problem' für mich durch.
bis denne... scholly
Verfasst: 10.10.2007 14:14
von gnozal
scholly hat geschrieben:
Meine Frage zielte aber nicht auf eine "selbstständige Lösung", sondern darauf, ob ich bei meiner "Suchschwäche" etwas in der Doku zu PureLVSORT übersehen habe, das das Gleiche erreicht.
Da weder von gnozal noch anderen, die erfahrungsgemäß seine Libs recht gut kennen, ein solcher Hinweis gekommen ist, lasse ichs wohl dabei bewenden.
I don't understand your problem, the following code (based on Fluid Byte's one to compare) seems to do exactly the same ?!
With only one line : PureLVSORT_SelectGadgetToSort(#LST_Filelist, #PureLVSORT_ShowClickedHeader_Icon)
Or am I missing something ?
Code: Alles auswählen
;-Define Varibales
#LST_Filelist = 101
;-Application Window
OpenWindow(0,0,0,500,400,"untitled",#WS_OVERLAPPEDWINDOW | 1)
CreateGadgetList(WindowID(0))
ListIconGadget(#LST_Filelist,0,0,0,0,"Name",200)
AddGadgetColumn(#LST_Filelist,1,"Size",70)
AddGadgetColumn(#LST_Filelist,2,"Type",190)
*hwndListView = GadgetID(#LST_Filelist)
;-Examine Directory
Filepath$ = "C:\WINDOWS"
ExamineDirectory(0,Filepath$,"*.*")
While NextDirectoryEntry(0)
Filename$ = DirectoryEntryName(0)
SHGetFileInfo_(Filepath$ + Filename$,0,shi.SHFILEINFO,SizeOf(SHFILEINFO),#SHGFI_TYPENAME)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
ItemText$ = Filename$ + Chr(10)
ItemText$ + StrF(DirectoryEntrySize(0)/1024,1) + " KB" + Chr(10)
ItemText$ + PeekS(@shi\szTypeName)
AddGadgetItem(#LST_Filelist,-1,ItemText$)
EndIf
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory And Filename$ > ".."
AddGadgetItem(#LST_Filelist,-1,Filename$ + Chr(10) + Chr(10) + "Folder")
EndIf
Wend
;
PureLVSORT_SelectGadgetToSort(#LST_Filelist, #PureLVSORT_ShowClickedHeader_Icon)
;
; ------------------------------------------------------------------------------------------------------
; MAIN LOOP
; ------------------------------------------------------------------------------------------------------
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_SizeWindow
ResizeGadget(#LST_Filelist,5,5,WindowWidth(0)-10,WindowHeight(0)-10)
EndIf
Until EventID = #WM_CLOSE
Verfasst: 10.10.2007 14:18
von Fluid Byte
Nö, von dem hätte ich keine Antwort bekommen

Soviel dazu!

Verfasst: 10.10.2007 18:41
von scholly
gnozal hat geschrieben:I don't understand your problem, the following code (based on Fluid Byte's one to compare) seems to do exactly the same ?!
With only one line : PureLVSORT_SelectGadgetToSort(#LST_Filelist, #PureLVSORT_ShowClickedHeader_Icon)
Or am I missing something ?
Sowohl Dein als auch Fliuds Beispiel funktionieren, aber meine Realität nicht:
LIG nach dem Einlesen der nach UID sortierten SQLite-DataBase:
Code: Alles auswählen
1|Blackbeard |Abenteuer |
2|Eine Millionen Jahre |Abenteuer |
3|Ayla und der Clan |Abenteuer |
4|Der letzte Dino |Abenteuer |
5|Der Patriot |Abenteuer |
6|Die Spur des Windes |Abenteuer |
7|Indiana Jones 2 |Abenteuer |
......
jetzt sortiere ich nach Titel:
Code: Alles auswählen
1829|10.5 - Apokalypse |Sci-Fi
1756|2001 - Odyssee im Weltraum |Sci-Fi
1757|2010 - Das Jahr in dem wir |Sci-Fi
378|2071 - Mutan Bestien |_lohnt nich
1758|2149 - Kampf in der Todesz.|Sci-Fi
945|28 Days later |Horror
1726|40 Jahre Beat-Club |Musik-Doku
.......
Wenn ich jetzt nach Genre sortiere:
Code: Alles auswählen
1|Blackbeard |Abenteuer |
2|Eine Millionen Jahre |Abenteuer |
3|Ayla und der Clan |Abenteuer |
4|Der letzte Dino |Abenteuer |
5|Der Patriot |Abenteuer |
6|Die Spur des Windes |Abenteuer |
7|Indiana Jones 2 |Abenteuer |
......
Die Titel sollten aber sortiert bleiben:
Code: Alles auswählen
3|Ayla und der Clan |Abenteuer |
1|Blackbeard |Abenteuer |
4|Der letzte Dino |Abenteuer |
5|Der Patriot |Abenteuer |
6|Die Spur des Windes |Abenteuer |
2|Eine Millionen Jahre |Abenteuer |
7|Indiana Jones 2 |Abenteuer |
.....
Ist das Problem nun klarer ?
[edit]
Es ändert sich auch nichts, wenn ich nicht nach UID sortiert das LIG fülle, sondern mit
nach Titel vorsortiere.
[/edit]
bis denne... scholly
Verfasst: 10.10.2007 22:23
von jear
@scholly
Was Du möchtest, das musst Du Dir wohl selbst schreiben. Die PureLVSORT-Prozeduren reagieren auf einen Klick in eine Tabellenspalte und sortieren nach dem so bezeichneten Kriterium. Die anderen Spalten folgen, wirken sich aber auf die Sortierung selbst wohl nicht aus. Woher sollen sie auch wissen, welche Spalte das jeweils zweite oder dritte Kriteruim bilden soll?
Du könntest Dir ein paar Buttons anlegen, die die gewünschten Sortierungen auslösen.
Die Sortierung selbst ist recht einfach, auch wenn das Folgende kompliziert klingt:
- die Tabelle Zeile für Zeile auslesen in eine strukturierte Liste
- die Struktur bestehend aus einem Indexfeld und einem Sortierstring fester Länge
- in das Indexfeld setzt Du die Satznummer Deiner Datenbasis
- den Sortierstring füllst Du so, dass sich die gewünschte Sortierung ergibt
- der Inhalt der Spalte des ersten Sortierkriteriums nach vorn, den des zweiten dahinter usw.
- jeweils auf feste Längen geschnitten oder mit Spaces aufgefüllt
- Zahlenwerte musst Du als String rechtsbündig mit führenden Nullen speichern
- dann die strukturierte Liste sortieren lassen
- die Tabelle löschen und entsprechend der Inhalte der Indexfelder wieder füllen
Verfasst: 10.10.2007 23:08
von scholly
jear hat geschrieben:Was Du möchtest, das musst Du Dir wohl selbst schreiben.
Ich vermute das Problem darin, daß ich in der ersten Spalte die UID stehen habe. Fliud und gnozal haben in der ersten Spalte File/Foldernamen stehen. Was ihre und meine Ergebnisse gemeinsam haben, ist, daß die
erste Spalte immer so "mitsortiert" wird, wie bei mir die 2. Spalte sollte
Das ist aber FMPOV eher eine kosmetische Sache, die ich hoffentlich hinterher mal irgendwie umgehen kann.
Du könntest Dir ein paar Buttons anlegen, die die gewünschten Sortierungen auslösen.
Was meinst Du, warum ich PureLVSort nutze ?
Richtig, ich bin blutiger Anfänger (steht das nich irgendwo ?) und gnozals Libs erleichtern mir das Leben/Lernen ungemein, weil ich mich auf die schwierigeren Sachen (Sqlite, MediaLib) konzentrieren kann.
Trotzdem danke für Deinen Lösungsansatz, vielleicht hilfts mir ja später mal weiter.
bis denne... scholly