<p>Delphi 標準搭載の TStringGrid はデータ行（非固定行）が 0 件（RowCount = FixedRows）になる様に設定することが禁じられています。<br />
行数を固定行数と等しくなるように設定すると、自動的に固定行の値が減ります。<br />
<!--<img alt="追加した直後のストリンググリッド" width="434" height="320" src="/faq/img/del0056-1.png" /><br />
<strong>追加した直後の StringGrid</strong><br />-->また、固定行の数を行数と同じに設定しようとすると、以下のエラーが発生し設定を完了することが出来ません。</p>
<blockquote>固定行の数は行数より小さくなければなりません.</blockquote>
<p>仕方がないので、StringGrid のデータ行を隠すことを検討します。隠すことによってユーザからはあたかも存在しないように見せることが出来ます。<br />
以下のように設定します。</p>
<pre class="brush: delphi">
with StringGrid1 do
var
  i: integer;
begin
  for i := FixedRows to RowCount - 1
    RowHeights[i] := -GridLineWidth;
end;
</pre>
<p>データ行を隠し行に設定しています。マイナスの GridLineWidth にしているのは、隠すために 0 を設定すると罫線が残ってしまうために、罫線の高さ分も計算して減らしています。<br />
これで見た目はデータ行がないように見えますが、マウスカーソルが移動してしまうので移動キーを押された場合の制御が別途必要になることがあります。<br />
<!--実行すると以下の様な画面になります。<br />
<img alt="データ行が無いストリンググリッド" width="434" height="320" src="/faq/img/del0056-2.png" /><br /><strong>データ行がない StringGrid</strong>--></p>