Через тернии к звездам!

На пыльных тропинках далеких планет останутся наши следы!

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта
Главная страница Автор Дельфи Сортировка StringGrid

Сортировка StringGrid

E-mail Печать PDF

//Сортировка таблицы StringGrid по нескольким столбцам
//Фиксированные строки и столбцы сортировке не подвергаются.
procedure SgSort(Sg: TStringGrid; mf: Set0255);
var
SlSort, SlRow : TStringList;
i,j : Integer;
St: String;
begin
//Сортируемый список.
SlSort := TStringList.Create;

//Добавляем в сортируемый список пары: "строка - объект".
//В качестве строки записываю значения ячеек тех столбцов,
//по которым надо провести сортировку. Берем ячейки, которые
//не принадлежат фиксированным строкам - чтобы не подвергнуть сортировке
//шапку таблицы, если она есть.
//В качестве объекта присоединяю копии соответствующих строк таблицы.
for i:=Sg.FixedRows to Sg.RowCount - 1 do
begin
//Создаю контейнер для копии строки таблицы.
SlRow:=TStringList.Create;
//Копирую строку таблицы в контейнер.
SlRow.Assign(Sg.Rows[i]);
//Добавляю в сортируемый список пару:
//строка: строки из ячеек столбцов для сортировки
//объект: контейнер, содержащий копию строки таблицы.
St:='';
for j:=0 to Sg.ColCount-1 do
if j<256 then
if j in mf then St:=St+Sg.Cells[j,i]+#9;
SlSort.AddObject(St,SlRow);
end;

//Сортирую
SlSort.Sort;

//Возвращаем в таблицу строки, отсортированные по столбцу с номером aCol.
j:=0;
for i:=Sg.FixedRows to Sg.RowCount - 1 do begin
//Беру очередной контейнер.
SlRow:=Pointer(SlSort.Objects[j]);
//Записываю содержимое контейнера в строку таблицы.
Sg.Rows[i].Assign(SlRow);
//Уничтожаю контейнер.
SlRow.Free;
//Следующий индекс списка.
j:=j+1;
end;

//Уничтожаю сортируемый список.
SlSort.Free;
end;

 
Интересная статья? Поделись ей с другими:

Добавить комментарий

Обои рабочего стола

Борис Валеджио

Красиво

Фото-Приколы

Фото-Забавные животные

Рекомендую

Рекомендую

Глобально

Великая Отечественная

История

Оружие

Познавательно

Юмор

Прочее

Война

Оружие


Свежие записи

Счетчики

Яндекс.Метрика