[Gelöst] ListView, Ordner Oben, Dateien unten?

Rund um die LCL und andere Komponenten

[Gelöst] ListView, Ordner Oben, Dateien unten?

Beitragvon pluto » 30. Mai 2019, 18:14 [Gelöst] ListView, Ordner Oben, Dateien unten?

Hallo

Für meine neue Oberfläche, für den Notizen Manager, such ich eine Möglichkeit in der ListView die "Ordner" Oben anzuzeigen und die Notizen unten.
Jeweils Natürlich Sortiert.

Mir sind bisher nur zwei Lösungen eingefallen:
1. Eine eigene ListView, die auf eine "Ebene" mehrer Listen verwalten kann.
Die habe ich sogar schon angefangen... dauert aber wohl noch etwas. Bei Interesse kann ich dazu ein extra Thread aufmachen, wo ich mehr ins Detail gehe.
Hier kann ich mehrer Listen hinzufügen z.b. eine Liste für Ordner und eine Liste für Notizen.

2. Eine Sortier Funktion mit der Standard ListView:
Hier muss die ListView erst Komplett geleert werden und dann aus der Basis Datenstruktur neu erstellt werden.
Die ListView hält nicht die Daten. Es gibt eine Basis Datenstruktur.

Kennt ihr noch andere Wege um dieses Problem zu lösen?
Zuletzt geändert von pluto am 30. Mai 2019, 22:47, insgesamt 1-mal geändert.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon pluto » 30. Mai 2019, 20:19 Re: ListView, Ordner Oben, Dateien unten?

Mir ist möglicherweise noch eine dritte Möglichkeit eingefallen:
Beim Einfügen von Einträgen, brauche ich ja "nur" eine Position.
D.H. ich muss in der Liste schauen, an welcher Position ich einfügen.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon wp_xyz » 30. Mai 2019, 22:06 Re: ListView, Ordner Oben, Dateien unten?

Ich verstehe das alles nicht. Warum sortierst du nicht einfach die vorhandene ListView? Das geht entweder mit Sort und einer im Ereignis OnCompare definierten Sortierreihenfolge, oder CustomSort, dem die Vergleichsfunction als Parameter übergeben wird. Die Vergleichsfunktion hat zwei ListItems als Parameter und muss festlegen, welcher von den beiden "kleiner" ist, also in der Sortierung obensteht. Wenn der erste Parameter "kleiner" ist, ist der Funktionswert -1; bzw +1, wenn der zweite "kleiner" ist; bzw. 0, wenn beide gleich sind. Deine Vergleichsfunktion muss so aufgebaut sein, dass, wenn ein Ordner und eine Notiz verglichen werden, den Ordner immer als "kleiner" eingestuft wird (-1 wenn der Ordner der 1.Parameter ist, bzw +1 wenn es der zweite Parameter ist).

Das beigefügte Beispielprojekt sortiert die Dateien und Ordner in dem Projektordner genauso, wobei noch zwischen "Ordner oben" und "Ordner unten" unterschieden werden kann
Dateianhänge
listview_sort.zip
(64.19 KiB) 3-mal heruntergeladen
wp_xyz
 
Beiträge: 2968
Registriert: 8. Apr 2011, 09:01

Beitragvon pluto » 30. Mai 2019, 22:47 Re: ListView, Ordner Oben, Dateien unten?

Vielen Dank für dein Beispiel.

Ich habe es gleich ausprobiert und es Funktioniert. Ich habe wohl den Wald voller Bäume nicht gesehen...

Ich werde es noch mal testen, aber es scheint das zu sein, was ich gesucht habe.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon pluto » 30. Mai 2019, 22:56 Re: [Gelöst] ListView, Ordner Oben, Dateien unten?

Ich habe es auch schon in die neue Oberfläche eingebaut, damit ist mir aufgefallen,
die Sortierung scheint nicht Natürlich zu sein:
1
10
2
9
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon wp_xyz » 31. Mai 2019, 01:31 Re: [Gelöst] ListView, Ordner Oben, Dateien unten?

Das passiert, wenn die Vergleichsfunktion die Items als Strings vergleicht (CompareText). Da "1" vor "9" kommt, wird auch "10" vor "9" einsortiert. Um als Zahlen zu vergleichen, musst du die Strings in Integer oder Floats umwandeln und dann per CompareValue aus der Unit Math vergleichen
wp_xyz
 
Beiträge: 2968
Registriert: 8. Apr 2011, 09:01

Beitragvon pluto » 31. Mai 2019, 10:39 Re: [Gelöst] ListView, Ordner Oben, Dateien unten?

Werde ich mal versuchen, es ist aber schon ein String:
Item1
Item10
Item2
Item9
hätte ich vielleicht dazu schreiben sollen.... Aber ich könnte versuchen, den "Zahlen" Teil getrennt vom "String" teil zu vergleichen....
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon wp_xyz » 31. Mai 2019, 12:39 Re: [Gelöst] ListView, Ordner Oben, Dateien unten?

Würde ich auch so machen. Es gibt allerdings auch ein "NaturalCompareText" in der Unit StrUtils:

Code: Alles auswählen
function NaturalCompareText (const S1 , S2 : string ): Integer ;
function NaturalCompareText(const Str1, Str2: string; const ADecSeparator, AThousandSeparator: Char): Integer;
wp_xyz
 
Beiträge: 2968
Registriert: 8. Apr 2011, 09:01

Beitragvon pluto » 31. Mai 2019, 12:51 Re: [Gelöst] ListView, Ordner Oben, Dateien unten?

NaturalCompareText Funktioniert Prima. Ich werde, die Sortier Funktion weiter Testen, aber es sieht schon sehr gut aus.

Manchmal denke ich einfach viel zu Kompliziert.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried