|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Сортировка по убыванию StringGrid
Здравствуйте . есть код сортировки по возрастанию. что нужно изменить,чтобы была сортировка по убыванию . подскажите,пожалуйста
Код:
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)
|