4

Delphi 7 に 0..N 行の文字列グリッドがあります。ユーザーがリストボックス number の任意の数字をクリックすると、0..N の数字を持つリストボックスがあり、その行番号が stringgrid で選択されます。

だから私はこれを持っています

   MystringGrid.Col :=0;
   MystringGrid.Row :=Listbox.itemindex;
   MystringGrid.Selection:=TGridRect(Rect(0,1 ,1 ,1));
   MystringGrid.SetFocus;

これにより、グリッド上の行が適切に選択されます(強調表示されます)が、問題は次の場合です

 listbox.itemindex=MystringGrid.rowcount;

その時私は得る

 Grid Index out of range error 

grids.paのように

 if (ACol < 0) or (ARow < 0) or (ACol >= ColCount) or (ARow >= RowCount) then
  InvalidOp(SIndexOutOfRange)

(ARow >= RowCount)は true なのでエラー

最後の行を選択するにはどうすればよいですか?

4

1 に答える 1

7

行がある場合は3、それらが呼び出されます

0,  1,  2.

という行がないことに注意してください3

より一般的には、N行がある場合、それらは呼び出されます

0,  1,  2, ..., N - 1.

という行がないことに注意してくださいN

したがって、問題は質問の最初の行ですでに見つかります。

[原文のまま!] Delphi 7 には、N 行の文字列グリッドがあります。0..N からの数字のリストボックスがあります

行がある場合N、リストボックスには数値が含まれている必要があります0..N-1。実際、数字0..Nを含むようにすると、リストボックスの行数は等しくなりN+1ます。つまり、文字列グリッドの項目数よりも 1 つ多くなります。

また:私は単純にやります

StringGrid1.Selection := TGridRect(Rect(0, 3, 4, 3))

3数が4+1

于 2013-04-06T13:06:34.903 に答える