Nie wiem, co się stało z tym tematem, chyba go ktoś usunął.
No więc, jak sortować zawartość kolumn w TListView?
Nie wiem, co się stało z tym tematem, chyba go ktoś usunął.
No więc, jak sortować zawartość kolumn w TListView?
Wyskakuje mi błąd przy:
ColumnToSort := Column.index;
ListView1.AlphaSort;
Undeclared identifier 'Column'.
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)"
A poza tym to działa tylko w jedną stronę. Znaczy sortowanie A-Z. A jak zrobić Z-A?
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ś? :> - Ł