![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте . есть код сортировки по возрастанию. что нужно изменить,чтобы была сортировка по убыванию . подскажите,пожалуйста
Код:
procedure TForm9.SgSort(aSg : TStringGrid; const aCol : Integer);
var
SlSort, SlRow : TStringList;
i, j : Integer;
begin
SlSort := TStringList.Create;
for i := aSg.FixedRows to aSg.RowCount - 1 do begin
SlRow := TStringList.Create;
SlRow.Assign(aSg.Rows[i]);
SlSort.AddObject(aSg.Cells[aCol, i], SlRow);
end;
SlSort.Sort;
j := 0;
for i := aSg.FixedRows to aSg.RowCount - 1 do begin
SlRow := Pointer(SlSort.Objects[j]);
aSg.Rows[i].Assign(SlRow);
SlRow.Free;
Inc(j);
end;
SlSort.Free;
end; |
|
#2
|
||||
|
||||
|
Вот ещё вариант
Код:
procedure SortToTableDesc(StrGrid: TStringGrid; SortColumn: integer);
function Uslovie(s2, s1: string): boolean;
var vl1, vl2:Extended;
begin
if tryStrtoFloat(s1,vl1) and tryStrtoFloat(s2,vl2) then
Result:= vl1 > vl2 else Result:= s1 > s2;
end;
var i, j, k: integer;
sTemp: string;
begin
with StrGrid do
for i := FixedRows to RowCount-2 do
for j := i + 1 to RowCount-1 do
if Uslovie(Cells[SortColumn, i], Cells[SortColumn, j]) then
for k := FixedCols to ColCount-1 do
begin
sTemp:= Cells[k, i];
Cells[k, i]:= Cells[k, j];
Cells[k, j]:= sTemp;
end;
end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Pilyla (26.05.2013)
| ||