Тот пример у меня тоже не идет. Предлагаю альтернативу, причем попроще (по моему мнению):
| Код | //вводим переменную ColumnToSort: integer;
//заполняем как в том примере procedure TForm1.Button1Click(Sender: TObject); var sr:tsearchrec; Item: TListItem; begin if FindFirst('c:\*.*',faAnyFile, sr) = 0 then repeat if (sr.Attr and faDirectory) <> sr.Attr then begin item:=lv1.items.add; item.Caption:=sr.name; Item.SubItems.Add(datetimetostr(filedatetodatetime(sr.time))); end; until FindNext(sr) <> 0; FindClose(sr); end;
procedure TForm1.lv1ColumnClick(Sender: TObject; Column: TListColumn); begin ColumnToSort := Column.Index; //фиксируем индекс колонки на которой был клик (Sender as TCustomListView).AlphaSort; //сортируем список, чтобы вызвать метод OnCopare end;
procedure TForm1.lv1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin case columntosort of 0: Compare := CompareText(Item1.Caption,Item2.Caption); //сортируем по имени файла 1: begin //сравниваем дату создания файлов и присваиваем соответствующее значение переменной compare if strtodatetime(Item1.SubItems[0])<strtodatetime(Item2.SubItems[0]) then Compare:= -1; if strtodatetime(Item1.SubItems[0])=strtodatetime(Item2.SubItems[0]) then Compare:= 0; if strtodatetime(Item1.SubItems[0])>strtodatetime(Item2.SubItems[0]) then Compare:= 1; end; end; end;
| |