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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 13:53   #1
Ant_M
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 22
По умолчанию Сортировка в Stringrid

Добрый день. Ребят не могу разобраться с сортировкой. Имеется форма на которой столбцы именуются так
StringGrid1.Cells[1,0]:='ФИО';
StringGrid1.Cells[2,0]:='Факультет';
StringGrid1.Cells[3,0]:='Специальность';
StringGrid1.Cells[4,0]:='К-во баллов';
StringGrid1.Cells[5,0]:='Отделение';
StringGrid1.Cells[6,0]:='Серия паспорта';
StringGrid1.Cells[7,0]:='Номер паспорта';
StringGrid1.Cells[8,0]:='Серия аттестата';
StringGrid1.Cells[9,0]:='Наличие медали';
StringGrid1.Cells[10,0]:='Необходимость общежития';
и стороки
begin
with StringGRid1
do for i:=1 to RowCount-1 do
StringGrid1.Cells[0, i]:=IntToStr(i);
end;
end;

все это при создании формы.

Не могу разобраться как отсортировать столбец количество баллов по возрастанию так чтобы все остальные колонки в соответствии с ним двигались. помогите пожалуйста!
Ant_M вне форума Ответить с цитированием
Старый 03.05.2013, 14:06   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

А отсортировать 1 столбец можете?
Если можете, то просто добавьте в код сортировки обмен значениями во всех требуемых столбцах.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.05.2013, 14:47   #3
Ant_M
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 22
По умолчанию

дак вот что то совсем все печально. Я подумала что можно добавить значения в массив отсортировать методом пузырька и обратно добавить,но даже с этим плохо. вот попытка
Код:
procedure TForm4.Button3Click(Sender: TObject);
var
mas:array of array of integer;
i,j,m,n, min,imin :integer;
    begin
      m:=StringGrid1.RowCount;//строки
      n:=StringGrid1.ColCount;//столбцы
      SetLength(mas,m,n);//строка столбец
       for i:=StringGrid1.FixedRows to n-1 do
        for j:=StringGrid1.FixedCols to m-1 do
        begin
          mas[j-1,i-1]:=StrToInt(StringGrid1.Cells[i,j]);
        end;
     for I := 1 to n-1 do begin
       imin:=i;
     for j := i+1 to n do
     if mas [imin] > mas[j] then
     begin
     imin:=j;
     min:=mas[i];
      mas[i]:=mas[imin];
     mas[imin]:=min;
     end;
      for I := 1 to n do begin
        stringgrid1.Cells[i,0]:=inttostr(mas[i])
      end;
     end;
Ant_M вне форума Ответить с цитированием
Старый 03.05.2013, 15:37   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Вроде работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, z: integer;
  s: string;
const
  col = 4;
begin
  with StringGrid1 do
    for i := 1 to RowCount - 2 do
      for j := i + 1 to RowCount - 1 do
        if strtoint(Cells[col, i]) < strtoint(Cells[col, j]) then
          for z := 1 to colcount - 1 do
          begin
            s := Cells[z, i];
            Cells[z, i] := Cells[z, j];
            Cells[z, j] := s;
          end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
  with StringGrid1 do
  begin
    colcount := 11;
    RowCount := 5;
    Cells[1, 0] := 'ФИО';
    Cells[2, 0] := 'Факультет';
    Cells[3, 0] := 'Специальность';
    Cells[4, 0] := 'К-во баллов';
    Cells[5, 0] := 'Отделение';
    Cells[6, 0] := 'Серия паспорта';
    Cells[7, 0] := 'Номер паспорта';
    Cells[8, 0] := 'Серия аттестата';
    Cells[9, 0] := 'Наличие медали';
    Cells[10, 0] := 'Необходимость общежития';
    for i := 1 to RowCount - 1 do
      Cells[0, i] := IntToStr(i);
  end;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.05.2013, 15:59   #5
Ant_M
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 22
По умолчанию

нужно получается по счету с 0 сортировать 4 столбец. а он пытается отсортировать первый. В первом строки и он ругается.
Ant_M вне форума Ответить с цитированием
Старый 03.05.2013, 16:17   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

А как у Вас задан балл?
Цитата:
а он пытается отсортировать первый
Мой код не пытается сортировать первый. Он сравнивает численные значения в четвертом столбце, и на основании этого меняет местами 2 строки в stringgrid.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.05.2013, 16:25   #7
Ant_M
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 22
По умолчанию

как integer. он с помощью кнопки высчитывается.
просто когда запускаешь программу ругается на значения в первом столбце,говорит "is not a valid integer value"
Ant_M вне форума Ответить с цитированием
Старый 03.05.2013, 16:27   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

В четвертом столбце при такой сортировке не должно быть пустых ячеек.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.05.2013, 16:28   #9
Ant_M
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 22
По умолчанию

их и нет в принципе
Ant_M вне форума Ответить с цитированием
Старый 03.05.2013, 16:30   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Можете выложить весь проект архивом и сказать, в какой последовательности нажимаете кнопки?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зАпутался с stringrid-ом denl9 Общие вопросы Delphi 9 10.05.2012 22:50
Stringrid и Listbox ytl09 Помощь студентам 0 30.01.2011 20:06
StrinGrid в Delphi TaYgA Помощь студентам 8 19.10.2009 17:17
StrinGrid Настенька..Блонди Общие вопросы Delphi 2 15.08.2009 16:45