listview sortowanie

0

Witam!
Jak posortowac kolumne od najwiekszej wartosci do najmniejszej: 1,2,5,10,20 a nie 1,10,2,20??

Jak trzeba zmienic ten kod??

var
ix: Integer;
begin
if ColumnToSort = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)
else
begin
ix := ColumnToSort - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;
end;

Dzieki!

0
var
   ix: Integer;
begin
   if ColumnToSort = 0 then
      Compare := IntToStr(Item1.Caption)>IntToStr(Item2.Caption);
   else
   begin
      ix := ColumnToSort - 1;
      Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
   end;
end;

Czy jakoś tak... nie pamietam już składania komparca

0

Było na forum conajmniej 3 razy

0

Czy moze ktos podac mi kod? Szukalem na forum ale nie moge nigdzie znalezc.

Z gory dzieki :-)

0

Czy moze ktos podac mi kod? Szukalem na forum ale nie moge nigdzie znalezc.

Z gory dzieki :-)

Do zdazeni OnComunClick wstawiasz:

ColumnToSort := Column.Index;
ListView1.AlphaSort;

A do onCompare taki:

var ix: Integer;
begin 
if ColumnToSort = 0 then
  Compare := CompareText(Item1.Caption,Item2.Caption) 
else begin 
  ix := ColumnToSort - 1; 
  Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); 
end; 

end;
0

Dzieki, ale ciagle sortuje kolumne tak: 6,5,43,42,4,3,2,15,12,1 a chcialem, zeby sortowalo od najwiekszej wartosci do najmniejszej. Czy wie ktos tak to posortowac?? :-)

0

w OnCompare:

var ix: Integer;
begin
if ColumnToSort = 0 then
   Compare := StrToInt(Item1.Caption) - StrToInt(Item2.Caption)
else begin
   ix := ColumnToSort - 1;
   Compare := StrToInt(Item1.SubItems[ix]) - StrToInt(Item2.SubItems[ix]);
end;

end;
0

Dzieki!!

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