Показать сообщение отдельно
  #4  
Старый 18.05.2007, 13:26
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Ясно. Ты не о том классе говоришь. Я так понимаю ты имеешь в виду класс TListView.
Но повторюсь - для сортировки обрабатывай событие OnCompare.

Это событие возникает:
  • если свойство SortType равно stData или stBoth;
  • если вызван метод AlphaSort;
  • если метод CustomSort вызывается без параметра SortProc

Событие OnCompare сравнивает элементы списка, которые передаются как параметры Item1 и Item2. Если Item1 и Item2 равноценны в порядке сортировки, установить параметр Compare равным 0. Если Item1 меньше Item2 (в порядке сортировки) - установить Compare меньшим 0, если Item1 больше Item2 - установить Compare большим 0.

Это из хелпа. По-моему все предельно ясно.

Пример. Сортировка по алфавиту по столбцу ColNum.

Код:
procedure TForm1.ListView1Compare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
begin
  //ColNum - номер столбца, по которому производится сортировка
  if ColNum = 0 then  
    Compare := AnsiCompareText (Item1.Caption,Item2.Caption)
  else
    Compare := AnsiCompareText(Item1.SubItems[ColNum-1],Item2.SubItems[ColNum-1])
end;

Если нужен обратный порядок - просто умножай параметр Compare на -1

Для производства сортировки можно вызвать метод:
Код:
ListView1.AlphaSort;
Ответить с цитированием