Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 12:19   #1
Илья71
Новичок
Джуниор
 
Регистрация: 06.06.2011
Сообщений: 2
По умолчанию Сортировка в stringgrid

Всем привет. Нужна помощь застрял на 1 проблемке....
имеесться стрин грид в котором заносяться данные по одной из 5 колонок
нужно сделать сортировку...данные в ячейках этой колонки числовые остальные буквенные...как зделать сортировку чтоб первыми строками выводилась самое наименьшее число в последней самое большое
Илья71 вне форума Ответить с цитированием
Старый 06.06.2011, 12:54   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
заносяться данные по одной из 5 колонок
Откуда?
Цитата:
нужно сделать сортировку..
сортировать данные там откуда заносятся, а потом выводить ОТСОРТРОВАННЫЕ.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.06.2011, 13:19   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, в принципе, я не вижу особых сложностей в сортировке содержимого стринггрида... Это, конечно, будет неоптимально и не быстро. Но должно работать без особых проблем... (p.s. а если в цикл сортировки добавить небольшую паузу и команду обработки очереди Application.ProcessMessages - так это будет не только медленно, но ещё и забавно (наглядно можно будет видеть, как тасуются строчки с содержимым грида...)


ДОБАВЛЕНО

заполнить грид (для отладки)
Код:
procedure TForm1.btFillStringGridClick(Sender: TObject);
const
  SortColumn = 4; // числовой столбец, по которому сортировать (отсчёт от нуля)
var i, j : integer;
begin
  Randomize;
  StringGrid1.RowCount := 10;
  StringGrid1.ColCount := 7;
  for i := StringGrid1.FixedRows to StringGrid1.RowCount-1 do
    for j := StringGrid1.FixedCols to StringGrid1.ColCount-1 do
      if (j = SortColumn) then StringGrid1.Cells[j, i] := IntToStr(Random(20)+1)
      else StringGrid1.Cells[j, i] := 'a'+IntToStr(i*100+j);
end;

А вот, собственно, код сортировки...
Код:
procedure TForm1.btSortStringGridClick(Sender: TObject);
const
  SortColumn = 4; // числовой столбец, по которому сортировать (отсчёт от нуля)
var i, j, k : integer;
  sTemp : string;
begin
  {сортировка массива методом простых обменов ("пузырька") }
  for i:=StringGrid1.FixedRows to StringGrid1.RowCount-2 do
    for j:=i+1 to StringGrid1.RowCount-1 do
      if StrToIntDef(StringGrid1.Cells[SortColumn,i],-1) >
               StrToIntDef(StringGrid1.Cells[SortColumn,j],-1) then
        for k:=StringGrid1.FixedCols to StringGrid1.ColCount-1 do
          begin
            sTemp := StringGrid1.Cells[k,i];
            StringGrid1.Cells[k,i] := StringGrid1.Cells[k,j];
            StringGrid1.Cells[k,j] := sTemp;
          end;

end;

Последний раз редактировалось Serge_Bliznykov; 06.06.2011 в 14:05.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.06.2011, 14:33   #4
Илья71
Новичок
Джуниор
 
Регистрация: 06.06.2011
Сообщений: 2
По умолчанию

большое спасибо!
Илья71 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка StringGrid vovey Помощь студентам 4 11.04.2010 14:25
StringGrid сортировка Gregorian Помощь студентам 1 26.02.2010 08:33
Сортировка в Stringgrid сер4ей Помощь студентам 1 24.02.2010 14:40
Сортировка в StringGrid Ch00kan0ff Общие вопросы C/C++ 2 24.03.2009 18:09
StringGrid и сортировка dee_lv Помощь студентам 5 02.05.2008 17:51