TreeView Alphasort

Rund um die LCL und andere Komponenten

TreeView Alphasort

Beitragvon lzuser » 7. Mär 2019, 17:59 TreeView Alphasort

Laz. 1.8.4 auf Win10 Experimente mit TreeView

1.) Nach Selected.AlphaSort; ein Repaint oder Refresh zeigt nur Bruchstücke an.
Gibt es einen Befehl, mit der die Anzeige im gleichen Zustand nur neusortiert erscheint?
Ich meine nicht: FullCollapse; Selected.AlphaSort; FullExpand;
Das funktioniert, aber dann sind ja alle Knoten auf.

2.) Bei der Sortierung erscheint "acer" vor "Aber", "fisch" vor "Fach" ...
Welcher Regel folgt das? Oder ist das ein Fehler?

Danke für eure Erfahrungen.
lzuser
 
Beiträge: 81
Registriert: 20. Jun 2009, 15:00

Beitragvon Warf » 7. Mär 2019, 18:20 Re: TreeView Alphasort

1) keine Ahnung ob’s einfacher geht, aber ich hab mal vor nem ähnlichem Problem gestanden (der tree view wurde automatisch gefüllt, wobei der alte State eventuell gelöscht wurde und daher alles neu zusammengeklappt war) da hab ich einfach am Anfang mir den State gespeichert, geupdated und Danach die die offen waren neu geöffnet

2) wird Mac ascii werten sortiert, a = 97, A = 65 (oder so) und für f und F gilt das selbe
Warf
 
Beiträge: 1111
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon wp_xyz » 7. Mär 2019, 19:50 Re: TreeView Alphasort

(1) kann ich nun mit dem beigefügten Programm reproduzieren, ohne das im einzelnen zu verstehen. Folge den Anleitungen auf dem Formular. Wenn man das TreeView.Refresh gegen ein TreeView.Invalidate austauscht, ist der Fehler weg.

(2) Wenn man in den Quellcode schaut, dann sieht man, dass die Sortierung über AnsiCompareStr läuft, und dazu findet man, zumindest für Delphi, auf http://www.delphibasics.co.uk/RTL.asp?N ... CompareStr:
"The comparison is not affected by length - it is carried out on a letter by letter basis. But a longer string is greater than a shorter, otherwise matching string. The comparison is case sensitive.
Upper case letters > Lower case letters; Lower case letters > Numbers".
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
wp_xyz
 
Beiträge: 2896
Registriert: 8. Apr 2011, 08:01

Beitragvon lzuser » 8. Mär 2019, 18:01 Re: TreeView Alphasort

Danke für die Hinweise.
zu 1.)
Ich habe 3 Knotenebenen: 0=Root 1=Ordner 2=Dateinamen
Wenn ich einen Ordner hinzugefügt habe, also Ebene 1, dann landet der richtig am Ende.
Jetzt Root selektieren und Selected.AlphaSort.
Der Baum wird neu gezeichnet, aber nur bis incl. des neuen richtig einsortierten Ordners. Danach kommt nichts mehr.
Da hilft auch Invalidate statt Repaint nichts.
Erst wenn ich das Fenster (und damit auch das TreeView) per Maus in der Größe ändere, wird der Baum vollständig angezeigt.
Ein Auslösen von FormResize(Self); (leere Prozedur) hilft jedoch nichts.
Sehr merkwürdig.
zu 2.)
AnsiCompareText (berücksichtigt nicht die Klein/Grossschreibung) statt AnsiCompareStr wäre für mich die richtige Sortierweise.
Kann man das beim TreeView irgendwo einstellen?
lzuser
 
Beiträge: 81
Registriert: 20. Jun 2009, 15:00

Beitragvon wp_xyz » 8. Mär 2019, 18:14 Re: TreeView Alphasort

lzuser hat geschrieben:Danke für die Hinweise.
zu 2.)
AnsiCompareText (berücksichtigt nicht die Klein/Grossschreibung) statt AnsiCompareStr wäre für mich die richtige Sortierweise.
Kann man das beim TreeView irgendwo einstellen?

Du kannst du mit CustomSort eine eigene Sortier-Routine aufrufen.
wp_xyz
 
Beiträge: 2896
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried