Sortowanie w TListView

0

Nie wiem, co się stało z tym tematem, chyba go ktoś usunął.

No więc, jak sortować zawartość kolumn w TListView?

0

Wyskakuje mi błąd przy:

ColumnToSort := Column.index;
  ListView1.AlphaSort;

Undeclared identifier 'Column'.

0

Dobra to już działa.
Ale jak włączam program i klikam na kolumne, żeby się sortowało, to wyskakuje jakiś błąd i przerywa się program.
"List index out of bounds(0)"

0

A poza tym to działa tylko w jedną stronę. Znaczy sortowanie A-Z. A jak zrobić Z-A?

0

u mnie w pewnym programie procedurki wyglądały tak (listview nazywał sie lvResults):

procedure TfrmMain.lvResultsColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  Desc := not Desc;
  ColumnToSort := Column.index;
  (Sender as TCustomListView).AlphaSort;
end;


procedure TfrmMain.lvResultsCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var i: byte;
begin
  // sortowanie list view
  if ColumnToSort = 0 then // jeżeli pierwsza kolumna to sortuj po caption
    Compare := AnsiCompareText(Item1.Caption,Item2.Caption)
  else if ColumnToSort = 1 then // jeżeli druga to musimy traktować to jako integery
    Compare := StrToInt(
    Copy(Item1.SubItems[ColumnToSort -1], 0, Length(Item1.SubItems[ColumnToSort -1]) -2))
    -
    StrToInt(
    Copy(Item2.SubItems[ColumnToSort -1], 0, Length(Item2.SubItems[ColumnToSort -1]) -2))
  else // jeśli inna to wybierz odpowiedni subitem i posortuj
    Compare := AnsiCompareText(Item1.SubItems[ColumnToSort -1],Item2.SubItems[ColumnToSort -1]);

  if Desc then // jeżeli odwrotny porządek
    Compare := -Compare;

  { ustalanie obrazków }
  for i := 0 to 3 do
    if i <> ColumnToSort then lvResults.Columns[i].ImageIndex := -1;

  if Desc then
    lvResults.Columns[ColumnToSort].ImageIndex := 1
  else
    lvResults.Columns[ColumnToSort].ImageIndex := 0;
end;

Desc i ColumntToStr to dwie zmienne globalne. Wstawianie obrazków odpowidało tym strzałkom góra/dół, a jedna z kolumn musiała być traktowana jako integery, stąd tam jest takie dziwne porównanie.

// dziwnie znajomo ten kod wygląda... skad go wziąłeś? :> - Ł

1 użytkowników online, w tym zalogowanych: 0, gości: 1