Sortowanie ListView bez kliknięcia

0

Mam procedurę, która sortuje listę po kliknięciu na kolumne:

procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  inSortColumnRep := Column.Index;
  ListaObrazowLV.AlphaSort;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
begin
  case inSortColumnRep of
    0 {File}   : {zerowe trzeba porównywać przez caption}
      compare := CompareStr(Item1.Caption, Item2.Caption);
    1 {Size}   :
      compare := CompareValue(
        StrToInt(Item1.SubItems.Strings[inSortColumnRep - 1]),
        StrToInt(Item2.SubItems.Strings[inSortColumnRep - 1]));
    else
      compare := CompareStr(
         Item1.SubItems.Strings[inSortColumnRep - 1],
         Item2.SubItems.Strings[inSortColumnRep - 1]);
  end;
end;

ale działa ona tylko, gdy ktoś kliknie w kolumnę. Da się jakoś zrobić, żebym mógł posorotwać ListView według wybranej kolumny, klikając w button??

0

Ten kod to Ci na pewno nie działa - nawet się nie skompiluje:

    0 {File}   : {zerowe trzeba porównywać przez caption}
      compare := Comparestr">CompareStr(Item1.Caption, Item2.Caption);

Poza tym, gdybyś się przyjrzał dobrze kodowi obu procedur, wychwyciłbyś ciekawe miejsce:

  inSortColumnRep := Column.Index;
  case inSortColumnRep of
    0 ...

Jak widać - cała filozofia polega na ustawieniu odpowiedniego indeksu inSortColumnRep. A teraz - myśl :]

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