Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизСортировка в StringGrid Найти похожие ветки
← →
DDDeN (2005-01-11 11:56) [0]Как отсортировать СтрингГрид по определенному полю (по возрастанию или убыванию) или по группе указанных полей?
← →
P.N.P. © (2005-01-11 12:22) [1]
type TStringGridExSortType = (srtAlpha,srtInteger,srtDouble);
procedure GridSort(SG : TStringGrid; ByColNumber,FromRow,ToRow : integer;
SortType : TStringGridExSortType = srtAlpha);
var Temp : TStringList;
function SortStr(Line : string) : string;
var RetVar : string;
begin
case SortType of
srtAlpha : Retvar := Line;
srtInteger : Retvar := FormatFloat("000000000",StrToIntDef(trim(Line),0));
srtDouble : try
Retvar := FormatFloat("000000000.000000",StrToFloat(trim(Line)));
except
RetVar := "0.00";
end;
end;
Result := RetVar;
end;
// Ðåêóðñèâíûé QuickSort
procedure QuickSort(Lo,Hi : integer; CC : TStrings);
procedure Sort(l,r: integer);
var i,j : integer;
x : string;
begin
i := l; j := r;
x := SortStr(CC[(l+r) DIV 2]);
repeat
while SortStr(CC[i]) < x do inc(i);
while x < SortStr(CC[j]) do dec(j);
if i <= j then begin
Temp.Assign(SG.Rows[j]); // Ìåíÿåì ìåñòàìè 2 ñòðîêè
SG.Rows[j].Assign(SG.Rows[i]);
SG.Rows[i].Assign(Temp);
inc(i); dec(j);
end;
until i > j;
if l < j then sort(l,j);
if i < r then sort(i,r);
end;
begin {quicksort};
Sort(Lo,Hi);
end;
begin
Temp := TStringList.Create;
QuickSort(FromRow,ToRow,SG.Cols[ByColNumber]);
Temp.Free;
end;
← →
DDDeN (2005-01-11 12:39) [2]Ого!!!
Один комментарий непонятен ;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c