Meiner Meinung müsste das gehen wenn ich folgendes mache :
Das Problem ist nun dass Stringgrid1.SortOrder nicht berücksichtigt wird.1. Definieren der StringGrid1CompareCells Methode
2. Stringgrid1.SortOrder := soDescending; oder Stringgrid1.SortOrder := soAscending;
3. Stringgrid1.SortColRow(true, index, 1, StringGrid1.RowCount - 1); // aufrufen (das 1 verhindert, dass meine Beschriftung mit Sortiert wird)
Nun hab ich ein bischen rumprobiert und gesehen das letzt endes die Routine
procedure TCustomGrid.Sort(ColSorting: Boolean; index, IndxFrom, IndxTo: Integer); ( grids.pas Zeile 2912)
Aufgerufen wird.
Leider berücksichtigt die dort stehende Routine SortOrder nicht. Der Fix, sollte es ein Bug sein ist Trivial, und würde so aussehen :
Code: Alles auswählen
if ColSorting then begin
if SortOrder = soAscending then begin // neu
while DoCompareCells(index, P, index, I)>0 do I:=I+1;
while DoCompareCells(index, P, index, J)<0 do J:=J-1;
end else begin// neu
while DoCompareCells(index, P, index, I)<0 do I:=I+1;// neu
while DoCompareCells(index, P, index, J)>0 do J:=J-1;// neu
end;// neu
end else begin
if SortOrder = soAscending then begin // neu
while DoCompareCells(P, index, I, index)>0 do I:=I+1;
while DoCompareCells(P, index, J, index)<0 do J:=J-1;
end else begin// neu
while DoCompareCells(P, index, I, index)<0 do I:=I+1;// neu
while DoCompareCells(P, index, J, index)>0 do J:=J-1;// neu
end;// neu
end;
Gruß
Corpsman
SVN Revision : 44121
FPC : 2.6.2-5
Widgetset : GTK2