![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка в StringGrid
Veetyok © (2004-08-02 17:11:00)Подскажите, как отсортировать таблицу по какому-нибудь столбцу и можно ли это елать нажимая на шапку StringGrida?
SelloutS (2004-08-04 04:48:00) [1]
procedure GridMSort_(AGrid: TStringGrid; const SortField: integer);
procedure ExchangeItems(Index1, Index2: Integer);
var
i: integer;
T: string;
begin
for i := 0 to AGrid.ColCount - 1 do
begin
T := AGrid.Cells[i, Index1];
AGrid.Cells[i, Index1] := AGrid.Cells[i, Index2];
AGrid.Cells[i, Index2] := T;
end;
end;
procedure QuickSort(L, R: integer);
var
I, J: Integer;
P: string;
begin
repeat
I := L;
J := R;
P :=AGrid.Cells[SortField, (L+R) shr 1];
repeat
begin
while CompareText(AnsiUpperCase(AGrid.Cells[SortField, I]),
AnsiUpperCase(P)) < 0 do
Inc(I);
while CompareText(AnsiUpperCase(AGrid.Cells[SortField, J]),
AnsiUpperCase(P)) > 0 do
Dec(J);
end;
if I <= J then
begin
ExchangeItems(I, J);
Inc(I);
Dec(J);
end;
until I > J;
if L < J then QuickSort(L, J);
L := I;
until I >= R;
end;
begin
if AGrid.RowCount > 1 then QuickSort(0, AGrid.RowCount-1);
end;
пример сортировки по первой колонки:
GridMSort_(StringGrid1, 0);
по второй соответственно:
GridMSort_(StringGrid1, 1);
и т.д
Asinus (2004-08-04 03:27:00) [2]Есть готовые компоненты. Велосипед изобретать не обязательно. Посмотри на http://www.torry.net