はじめまして。質問があります。
StringGridの指定した行(Row)のみを
削除する方法があれば教えてください。
ちなみに削除した後に、その削除した行(Row)を
詰めて、Grid内にデータを表示したいのですが・・・
良い方法があれば教えてください。
自前で行詰めを行うしか方法はありません。
下記のような感じです。
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;
Basserさんありがとうございます。おっしゃって頂いたとおりに
削除以降の行を詰めて、最後にStringGrid1.RowCount - 1にして
行数のつじつまを合わせるやり方でうまくいきました。
本当にありがとうございました。
ツイート | ![]() |