Показать сообщение отдельно
  #1  
Старый 08.04.2014, 15:30
'Zanuda' 'Zanuda' вне форума
Прохожий
 
Регистрация: 01.04.2014
Сообщения: 17
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Заполнение Грида

Доброго времени суток. При заполнении StringGrid-а я столкнулся с одной проблемой. Дан грид, с заполненными ячейками "молочного" цвета. Мне необходимо заполнить зеленые ячейки, начиная с правого верхнего угла по следующему принципу: Сравнивается сумма значений в двух ячейках сверху(зеленой и молочной) и справа(тоже зеленой и молочной), и минимальная сумма записывается в ячейку. Например, член матрицы
S[3,5]:=min((S[1,5]+H[2,5]),(S[3,7]+V[3,6])), где S-зеленые ячейки, а V,H-молочные( по горизонтали и вертикали соотв-но).
А первая строка и последний столбец заполняется суммой предыдущей зеленой ячейки и молочной.
Цикл я написал, но почему то заполняется только 2я строка. Помогите разобраться, пожалуйста. И еще вопрос, у меня сначала заполняется первая строка и последний столбец(зеленые ячейки), а потом остальные зеленые ячейки по нажатию отдельной кнопки. Объединить эти процедуры пытался, но не удалось. Возможно ли это?
Вот код:
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
  c,r:integer;
begin
  c:=StringGrid1.ColCount-3;
  For r:=2 to StringGrid1.RowCount-1 do
  while (c>=1) do
  begin
    if (odd(r)=false) then
    begin
      S[r,c]:=min((strtoint(StringGrid1.Cells[c,r-2])+strtoint(StringGrid1.Cells[c,r-1])),(strtoint(StringGrid1.Cells[c+2,r])+strtoint(StringGrid1.Cells[c+1,r])));
      StringGrid1.Cells[c,r]:=inttostr(S[r,c]);
      c:=c-2;
    end;
  end;
end;
И рисунок:
Ответить с цитированием