Вот уж не думал, что с сортировкой будет все так сложно. Вот что откопал в сети по этому поводу:
Нужно изменить модуль
ShellCtrls.pas следующим образом:
Код:
TCustomShellListView = class(TCustomListView, IShellCommandVerb)
...
public
...
// Добавить следующую строку строку:
property FolderList: TList read FFolders;
...
end;
Теперь в программе можно делать сортировку:
Код:
unit Unit1;
interface
...
type
TForm1 = class(TForm)
ShellListView1: TShellListView;
...
procedure ShellListView1ColumnClick(Sender: TObject;
Column: TListColumn);
...
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
SortColumn: Integer;
function ShellCompare(Item1, Item2: Pointer): Integer;
begin
Result := Smallint(
TShellFolder(Item1).ParentShellFolder.CompareIDs(
SortColumn,
TShellFolder(Item1).RelativeID,
TShellFolder(Item2).RelativeID));
end;
procedure TForm1.ShellListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
SortColumn := Column.Index;
ShellListView1.FolderList.Sort(ShellCompare);
ShellListView1.Invalidate;
end;
ЭТО РЕАЛЬНО РАБОТАЕТ!
Вот ссылочка на оригинал статьи (на английском):
http://www.festra.com/wwwboard/messages/7369.html