[Delphi] データ行が 0 行のグリッドを表示する

Delphi 標準搭載の TStringGrid はデータ行(非固定行)が 0 件(RowCount = FixedRows)になる様に設定することが禁じられています。
行数を固定行数と等しくなるように設定すると、自動的に固定行の値が減ります。
また、固定行の数を行数と同じに設定しようとすると、以下のエラーが発生し設定を完了することが出来ません。

固定行の数は行数より小さくなければなりません.

仕方がないので、StringGrid のデータ行を隠すことを検討します。隠すことによってユーザからはあたかも存在しないように見せることが出来ます。
以下のように設定します。

with StringGrid1 do
var
  i: integer;
begin
  for i := FixedRows to RowCount - 1
    RowHeights[i] := -GridLineWidth;
end;

データ行を隠し行に設定しています。マイナスの GridLineWidth にしているのは、隠すために 0 を設定すると罫線が残ってしまうために、罫線の高さ分も計算して減らしています。
これで見た目はデータ行がないように見えますが、マウスカーソルが移動してしまうので移動キーを押された場合の制御が別途必要になることがあります。

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0056