Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Направление сортировки


Автор: Гость_Konstantin 22.4.2005, 12:13
Удачного дня всем!
Подскажите как в listview поменять направление сортировки (по убыванию)

Автор: ~FoX~ 22.4.2005, 13:19
А что нам про это справка говорит? smile
Цитата

stNone No sorting is done.
stData Items are sorted based on their Data property. An event handler must be provided to compare Data values.
stText Items are sorted based on their Caption property.
stBoth Items are sorted based on both the Data and Caption. The Data values are ignored unless an event handler is provided to compare them.


Пример
Код

ListView1.SortType := stText;

Добавлено @ 13:27
Ой, это я погорячился. Тебе видать надо не по возростанию, а по убыванию сортить.

Если так, то только руками, или компонент переписать.

Автор: fess 22.4.2005, 14:04
Цитата
Если так, то только руками, или компонент переписать.

Зачем чуть-что сразу компонент переписывать - надо дальше справку читать smile

Для изменения алгоритва сортировки используется событие OnCompare:


Код

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin

{Параметр Compare может иметь три значения: 1, -1 или 0. Единица означает,
что первый элемент больше (или должен быть размещён после) второго элемента.
Минус одни означает, что первый элемент меньше чем (или должен быть размещён
перед) второй элемент. Ноль означает, что два элемента равны - это цитата из DRNB  }

  {для сортировки по тексту по убыванию, если по данным - то сравниваешь сами данные}
 if CompareText(Item1.Caption,Item2.Caption)>0
 then  Compare:=-1
 else if CompareText(Item1.Caption,Item2.Caption)<0
      then  Compare:=1;
  
  {можно это же записать ещё короче, но менее понятно }
//Compare:= -CompareText(Item1.Caption,Item2.Caption);


end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)