[Lazarus] Strange Alphasort in ListView

Vojtěch Čihák vojtech.cihak at atlas.cz
Tue Apr 14 16:49:34 CEST 2015


Delphi has no properties AutoSort, SortColumn and SortDirection nor methods BeginUpdate and EndUpdate.
 
I would provide a patch which will set Flag lffPreparingSorting on BeginUpdate and reset it on EndUpdate.
+one additional call of Sort on EndUpdate (maybe only if AutoSort is True) OR move Sort; form protected to public.
 
What is preferred?
 
V.
______________________________________________________________
> Od: "Vojtěch Čihák" <vojtech.cihak at atlas.cz>
> Komu: Lazarus mailing list <lazarus at lists.lazarus.freepascal.org>
> Datum: 14.04.2015 15:23
> Předmět: Re: [Lazarus] Strange Alphasort in ListView
>
I understand. Method Sort; is protected (as it is in Delphi).
 
You have probably no other choice than do
 
 ListView1.SortDirection:=sdDescending;
 ListView1.SortDirection:=sdAscending;
 
which works but it is unefficient, sorting is done twice.
 
I tried:
 ListView1.BeginUpdate;
 ListView1.SortDirection:=sdDescending;
 ListView1.EndUpdate;
 ListView1.SortDirection:=sdAscending;but it doesn't help, sorting is still done twice (at least on Qt).ListView has some flags to avoid sorting but those flags are private.V. 
 
______________________________________________________________
> Od: "Valdas Jankūnas" <zmuogs at gmail.com>
> Komu: Lazarus mailing list <lazarus at lists.lazarus.freepascal.org>
> Datum: 14.04.2015 15:02
> Předmět: Re: [Lazarus] Strange Alphasort in ListView
>
2015.04.14 15:34, Vojtěch Čihák rašė:
> No, it isn't a bug.
>
> In sources, you can see comment:
>
> function AlphaSort: Boolean; // always sorts column 0 in sdAscending order

Looked not in *primary* source (Google, Documentation) :)

>
> So if you want other sorting, you must set three sort-related properties:
>
> ListView1.SortColumn:=1;
> ListView1.SortDirection:=sdAscending;
> ListView1.SortType:=stText;
>
> It works, I just tested in Qt.

Why I came to AlphaSort: in my source ListView is cleared (columns stays 
same) and populated with new info. After that current column (say 
SortColumn=1) is no sorted (Autosort is TRUE; tried in Qt, Gtk2 and Win) 
so I must somehow to trigger sorting. But how?


-- 
   Valdas Jankūnas

--
_______________________________________________
Lazarus mailing list
Lazarus at lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus <http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus>


----------

--
_______________________________________________
Lazarus mailing list
Lazarus at lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus <http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20150414/f1bdda0c/attachment-0003.html>


More information about the Lazarus mailing list