StringGridの指定した行のみを削除する方法

解決


ここのの  2006-11-21 13:35:40  No: 23996  IP: 192.*.*.*

はじめまして。質問があります。
StringGridの指定した行(Row)のみを
削除する方法があれば教えてください。

ちなみに削除した後に、その削除した行(Row)を
詰めて、Grid内にデータを表示したいのですが・・・
良い方法があれば教えてください。

編集 削除
Basser  2006-11-21 15:10:05  No: 23997  IP: 192.*.*.*

自前で行詰めを行うしか方法はありません。
下記のような感じです。

procedure TForm1.Button1Click(Sender: TObject);
var
  i, Idx: Integer;
begin
  // 削除行のインデックスを取得
  Idx:= StringGrid1.Row;

  if (Idx >= StringGrid1.RowCount - 1) then
    // 削除行が最終行の場合
    StringGrid1.Rows[Idx].Clear
  else
  begin
    // 削除行以降の行詰め
    for i:= Idx + 1 to StringGrid1.RowCount - 1 do
      StringGrid1.Rows[i - 1].Assign(StringGrid1.Rows[i]);

    // ゴミデータの後始末
    StringGrid1.Rows[StringGrid1.RowCount - 1].Clear;
    // 行数をデクリメント
    StringGrid1.RowCount:= StringGrid1.RowCount - 1;
  end;
end;

編集 削除
ここのの  2006-11-23 21:31:21  No: 23998  IP: 192.*.*.*

Basserさんありがとうございます。おっしゃって頂いたとおりに
削除以降の行を詰めて、最後にStringGrid1.RowCount - 1にして
行数のつじつまを合わせるやり方でうまくいきました。
本当にありがとうございました。

編集 削除