Показать сообщение отдельно
  #5  
Старый 30.11.2009, 02:57
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Вот уж не думал, что с сортировкой будет все так сложно. Вот что откопал в сети по этому поводу:
Нужно изменить модуль 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
Ответить с цитированием