Seite 1 von 1
Sortieren eines Listicongadget
Verfasst: 13.11.2006 13:13
von dysti
Hallo,
ich habe ein Listicon mit Spalten "Vorname" und "Name" erstellt.
Die eingegebenen Daten möchte ich sortiert haben.
Habe überall gesucht, aber nichts gefunden. Habe das Beispiel von Danilo probiert, aber da ich mich mit Sendmessage&Co nicht auskenne, mußte ich aufgeben. Dann habe ich die Gnozal-PureLVSort-LIB probiert. Aber......., alle sortieren nur auf Mausklick im Spaltenkopf. Ich möchte die Liste schon nach dem Aufbau automatisch sortiert angezeigt haben. Das muß doch möglich sein?
Re: Sortieren eines Listicongadget
Verfasst: 13.11.2006 13:20
von Kiffi
> Ich möchte die Liste schon nach dem Aufbau automatisch sortiert angezeigt
> haben. Das muß doch möglich sein?
wie 'fütterst' Du denn das ListIconGadget? Sprich: Woher holst Du die Daten?
Wenn's beispielsweise eine Datenbank ist, hast Du die Möglichkeit, die
zugrunde liegende SQL-Anweisung bereits mit einer Order-Anweisung zu
versehen.
Grüße ... Kiffi
Verfasst: 13.11.2006 13:33
von dysti
Ich hole die Daten nicht über SQL sondern direkt zeilenweise aus einer Textdatei.
Verfasst: 13.11.2006 13:43
von Kiffi
dysti hat geschrieben:Ich hole die Daten nicht über SQL sondern direkt zeilenweise aus einer Textdatei.
dann lies die Textdatei in eine LinkedList ein. Die kannst Du dann sortieren
lassen und danach deren Inhalt in das LI-Gadget einfügen.
Grüße ... Kiffi
Re: Sortieren eines Listicongadget
Verfasst: 13.11.2006 15:05
von gnozal
dysti hat geschrieben:....., alle sortieren nur auf Mausklick im Spaltenkopf. Ich möchte die Liste schon nach dem Aufbau automatisch sortiert angezeigt haben. Das muß doch möglich sein?
1. If your listicon has only one column, use the #LVS_SORTASCENDING/#LVS_SORTDESCENDING styles.
2. Else, with PureLVSORT, you can use the PureLVSORT_SortListIconNow() function.
3. You can also sort the data before loading it in the listicon like Kiffi said.
Verfasst: 14.11.2006 13:42
von dysti
Also, nach dem Hinweis von Gnozal ist die Tabelle bei der Anzeige jetzt sortiert. Aber wenn ich jetzt auf den Spaltenkopf klicke, wird die umgekehrte Sortierung angezeigt. Aber der Click soll ohne Auswirkung bleiben. Meine Select-Abfrage funktioniert nicht.
Wie kann ich dieses Verhalten abschalten?
Code: Alles auswählen
#Window_0 = 0
#ListIcon_0 = 0
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 602, 302, "PureLVSORT Sortiertest", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_0))
ListIconGadget(#ListIcon_0, 5, 5, 590, 285, "Vorname", 110)
AddGadgetColumn(#ListIcon_0, 2, "Name", 130)
AddGadgetItem(#ListIcon_0, -1, "Egon" + Chr(10) + "Müller" )
AddGadgetItem(#ListIcon_0, -1, "Willi" + Chr(10) + "Müller")
AddGadgetItem(#ListIcon_0, -1, "Anton" + Chr(10) + "Müller")
EndIf
EndIf
EndProcedure
Open_Window_0()
PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_No) ;IconLeft)
PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_String)
PureLVSORT_SortListIconNow(#ListIcon_0, 0, #LVS_SORTDESCENDING)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #ListIcon_0
PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_No)
PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_String)
PureLVSORT_SortListIconNow(#ListIcon_0, 0, #LVS_SORTDESCENDING)
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
End
Verfasst: 15.11.2006 12:58
von gnozal
dysti hat geschrieben:Aber der Click soll ohne Auswirkung bleiben.
Wie kann ich dieses Verhalten abschalten?
Like this ?
Code: Alles auswählen
#Window_0 = 0
#ListIcon_0 = 0
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 602, 302, "PureLVSORT Sortiertest", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_0))
ListIconGadget(#ListIcon_0, 5, 5, 590, 285, "Vorname", 110)
AddGadgetColumn(#ListIcon_0, 2, "Name", 130)
AddGadgetItem(#ListIcon_0, -1, "Egon" + Chr(10) + "Müller" )
AddGadgetItem(#ListIcon_0, -1, "Willi" + Chr(10) + "Müller")
AddGadgetItem(#ListIcon_0, -1, "Anton" + Chr(10) + "Müller")
EndIf
EndIf
EndProcedure
Open_Window_0()
PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_No) ;IconLeft)
PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_String)
PureLVSORT_SortListIconNow(#ListIcon_0, 0, #LVS_SORTDESCENDING)
; don't react to header click
PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_NoSorting)
PureLVSORT_SetColumnType(#ListIcon_0, 1, #PureLVSORT_NoSorting)
;
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
or like that ?
Code: Alles auswählen
#Window_0 = 0
#ListIcon_0 = 0
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 602, 302, "PureLVSORT Sortiertest", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_0))
ListIconGadget(#ListIcon_0, 5, 5, 590, 285, "Vorname", 110)
AddGadgetColumn(#ListIcon_0, 2, "Name", 130)
AddGadgetItem(#ListIcon_0, -1, "Egon" + Chr(10) + "Müller" )
AddGadgetItem(#ListIcon_0, -1, "Willi" + Chr(10) + "Müller")
AddGadgetItem(#ListIcon_0, -1, "Anton" + Chr(10) + "Müller")
EndIf
EndIf
EndProcedure
Open_Window_0()
PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_No) ;IconLeft)
PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_String)
PureLVSORT_SortListIconNow(#ListIcon_0, 0, #LVS_SORTDESCENDING)
; clear gadget
PureLVSORT_ClearGadget(#ListIcon_0)
;
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
Verfasst: 15.11.2006 17:52
von dysti
super, funktioniert.
Verfasst: 16.11.2006 22:00
von HemSA
Hallole Ihr,
ich mache bei für mich interesanten Themen einfach mal schnell eine Kopie ( Ctrl+C) von dem dargestellten Code und füge es in das PureBasic v4.00 das ich habe ein ( ich gehe einfach mal davon aus, das sich da keiner einen "Scherz" erlaubt und den Leuten hier was unterjubelt - man lernt ja auch was dabei, wenn man das Ergebnis von einem neuen Bereich sieht, und dann versteht man den Code gleich viel besser).
Aber hier habe ich es z. B. mit allen "BeispielCodes" probiert, aber es kam immer die Fehlermeldeung wie z.B. diese hier:
"Zeile 15: PureLVSORT_SelectGadgetToSort() is not a function, array, macro or linked list"
1.) Woher bekomme ich dann jetzt diese "PureLVSORT_SelectGadgetToSort()" Funktion oder was mir fehlt, und wie baue ich das in mein PB ein?
So was ähnliches kommt mir auch bei anderen Themen vor, das die Beispiele wegen einem "Fehlen von einer Funktion, Array etc." nicht funktionieren - z.B. SQL-light oder anderen. Ich lasse es dann meistens gleich wieder mit dem Probieren.
2.) Wie sieht es dann mit einem "Update" aus - es soll ja jetzt schon PB 4.1 geben, muss man dann alles wieder neu Installieren, oder warten bis es eine Version für die neue PB-Version gibt? Dann wird man ja wohl immer mit mehreren PB-Versionen arbeiten müssen - vielleicht mit 3?
Vielen Dank schon mal - war einfach mal so ein Gedanke den ich da hatte nach den "Fehlversuchen" hier bei den Beispielen
Verfasst: 16.11.2006 22:29
von dysti
HemSa: hier ist die Downloadadresse von Gnozal:
http://people.freenet.de/gnozal/
Hier bekommst du die Libs. Gnozal hat alles so gut vorbereitet, nur das Installprogramm aufrufen, Pb neu starten und schon stehen dir alle Befehle zur Verfügung. Die Lib in diesem Thread ist die PURELVSort.
Lade dir auch die anderen Lib herunter. Überall Beispielprogramme dabei.
Die PBOSL PureBasic OpenSource Libraries solltest du unbedingt installieren. Fast ein Muß. Mit allen Lib kannst du fast alles realisieren, was dein Purebasic-Herz begehrt.
Du kannst die PB-Verion par. inst. Habe ich auch gemacht. Es gibt zumindest bei mir keine Schwierigkeiten.