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

解決


ここのの  2006-11-21 22:35:40  No: 23996

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

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


Basser  2006-11-22 00:10:05  No: 23997

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

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-24 06:31:21  No: 23998

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加