私が作成しようとしているプログラムは、Delphi TStringGrid
コンポーネントを使用しています。基本的に、私はそれはので、私は4つのボタンを使用して、グリッドを通じて価値P
を移動することができ作るしようとしています:ダウン、左、そして右、アップ。TStringGridのセルを使用した値の移動
P
の値を上下左右に移動できます。しかし何らかの理由で、私はそれを正しく動かそうとすると、ただ1つの要素の代わりに0
という行全体を埋めます。なぜ私は理解できません。
procedure TForm2.Button4Click(Sender: TObject);//pressing the "right" button
var
i, j: Integer;
begin
for i := 0 to Form2.StringGrid1.ColCount do
for j := 0 to Form2.StringGrid1.RowCount do
if StringGrid1.Cells[i, j] = 'P' then
begin
StringGrid1.Cells[i, j] := '0';
StringGrid1.Cells[i+1, j] := 'P';
{ I have done the same for up, left and down (down would be j+1, left would be i-1, etc}
break;
end;
end;
これは、プログラムがどのように見えるかです:
P
が(7,7)
に位置していますこれは私が右を押したときに何が起こるかです:
P
は(3,6)にあり、右を押すと行全体が0
に変更されました。
ループは、それぞれ 'ColCount - 1'と 'RowCount - 1'になるはずです。 –
さて、あなたはグリッドを反復しているので、 '0,0'の' P'を '1,0'に移動すると、' i'が '1'になったら再び移動します。 –
'i = ColCount - 1'のときは、次の列に 'P'をつけないでください。 –