Problem z sortowaniem ListView

0

Mam dziwny problem. Mam ListView ze stylem Raport. Są w nim 4 kolumny. W pierwszych 3 jest text który się ładnie sortuje, a w 4 są cyfry, które już się nie sortują :/ Nie mam pojęcia jak to zrobić, może ktoś z Was ma jakiś pomysł?

Kod:

var (globalny)
L3ColumnToSort: integer;

procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
 if L3ColumnToSort = Column.Index then begin
 if L3ColumnToSort = 0 then L3ColumnToSort := 4;
 if L3ColumnToSort = 1 then L3ColumnToSort := 5;
 if L3ColumnToSort = 2 then L3ColumnToSort := 6;
 if L3ColumnToSort = 3 then L3ColumnToSort := 7;
 end else L3ColumnToSort := Column.Index;
    ListView1.AlphaSort;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
 if L3ColumnToSort = 0 then
    Compare := CompareText(Item1.Caption, Item2.Caption);
 if L3ColumnToSort = 1 then
    Compare := CompareText(Item1.SubItems[0], Item2.SubItems[0]);
 if L3ColumnToSort = 2 then
    Compare := CompareText(Item1.SubItems[1], Item2.SubItems[1]);
 if L3ColumnToSort = 3 then
    Compare := CompareText(Item1.SubItems[2], Item2.SubItems[2]);
 if L3ColumnToSort = 4 then
    Compare := CompareText(Item2.Caption, Item1.Caption);
 if L3ColumnToSort = 5 then
    Compare := CompareText(Item2.SubItems[0], Item1.SubItems[0]);
 if L3ColumnToSort = 6 then
    Compare := CompareText(Item2.SubItems[1], Item1.SubItems[1]);
 if L3ColumnToSort = 7 then
    Compare := CompareText(Item2.SubItems[2], Item1.SubItems[2]);
end;

Przykład
http://www.freeimagehosting.net/fea2083939.jpg

0

Chodzi mu o to, żeby nie były sortowane tylko wg. pierwszych liczb w ostatniej kolumnie, a jako wszystkie liczby.

Powiem tyle... było ;P

0

Eh dzięki za wskazówke nawet nie zauważyłem, że on sortuje wg. pierwszego znaku. Uratowała mnie ta procedura, dla potomnych:

function CompareNumeric(AInt1, AInt2: Integer): Integer;
begin
 if AInt1 > AInt2 then Result := 1 else
 if AInt1 = AInt2 then Result := 0 else
    Result := -1;
end;
0

A ja mam pytanie nie związane z problemem. Co to za ListView, bo jakiś taki ładny:) ?

0

Zwykły, na oko to tylko w stylu standardowym XP (Luna). Jak zrobić żeby omponenty się stylowały zgodnie z Windows XP? To jest gdzieś w artykułach i chodzi o tzw. manifest XP.

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