|
#1
|
|||
|
|||
Заполнение Грида
Доброго времени суток. При заполнении 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; |