Сортировка данных в колонках ListView

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Shouldercannon
Сообщения: 74
Зарегистрирован: 08 июн 2008, 15:49

11 мар 2011, 10:27

Так делается сортировка для двух колонок;

Код: Выделить всё

procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  if FSortKey = Column.Index + 1 then FSortKey := -FSortKey else FSortKey := Column.Index + 1;
  if ListView1.SortType <> stText then ListView1.SortType := stText else ListView1.AlphaSort;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
var
  N1, N2: Integer;
begin
  if Abs(FSortKey) = 1 then Compare := AnsiCompareText(Item1.Caption, Item2.Caption)
  else
  begin
	N1 := StrToInt(Item1.SubItems[Abs(FSortKey) - 2]);
	N2 := StrToInt(Item2.SubItems[Abs(FSortKey) - 2]);

	if N1 = N2 then Compare := 0 else if N1 < N2 then Compare := -1 else Compare := 1;
  end;
  Compare := Compare * (FSortKey div Abs(FSortKey));
end;
Но это только для двух колонок, а если их три, четыре или более?
FSortKey - номер колонки.

Код: Выделить всё

  if Abs(FSortKey) = 1 then
	begin
	end
  else
  if Abs(FSortKey) = 2 then
	begin
	end
  else
  if Abs(FSortKey) = 3 then
	begin
	end;
Как тут сделать сортировку не знаю.
GeorgeSoca
Сообщения: 0
Зарегистрирован: 12 окт 2015, 04:09
Откуда: Guam
Контактная информация:

16 окт 2015, 06:02

На нашем сайте вы можете чувствовать себя в безопасности! Кроме того, мы используем зеркальные жесткие диски на все наши серверы, поэтому мы также взять резервную два раза в день на отдельных серверах. Мы используем ISPmanager, как на панели управления. ISPmanager является панель управления, которая позволяет легко управлять своей веб-сайт. С нами вы можете разместить столько веб-сайты и домены, которые вы хотите для учетной записи хостинга.
virtual hosting
Ответить