0

文字列グリッドに同じ高さの行を持たせたい場合...

正確に 5 行から始まることはわかっているので、設計時にそうします。

実行時に余分な行を追加したい場合があります (親の下に追加しないコードがあります。その時点では、スクロール バーに依存しています)。

sg.height := sg.height + sg.RowHeights[0]; のようです。期待される結果を生成していません-最後の行の後に予期しない空白があります(余分な高さが行数にどのように対応するかを計算しようとしていますが、行数に関係なく、1行の高さのように見えますグリッド内にあります)。

他に考慮すべきことはありますか?(おそらく GridLineWidth?) または、オブジェクト インスペクタでプロパティを間違って設定した可能性がありますか? GridHeightではなく、を使用する必要がありHeightますか?

注: この問題は、stringgid がすべてのセルと同じ幅で、スクロール バーが表示され、最後の列の一部を描画している場合にのみ発生します。スクロール バーが収まるように、文字列グリッドの右側に醜い空白スペースを残しておけば、問題は発生しません。

行数を追加した後に新しいグリッド高さを計算する式を教えてもらえますか? または、私は何か間違ったことをしています。


[更新] ファッジ ファクター 3 がmarginプロパティに対応するように見えます

4

2 に答える 2

2

私以外の誰かが興味を持っている場合に備えて、これを機能させるために私がしたことは次のとおりです。

行を追加する場合:

newHeight := stringGrid.Height + 
             stringGrid.RowHeights[Pred(stringGrid.Row)] + 
             stringGrid.GridLineWidth;  

if newHeight < maxheight then
   stringGrid.Height := newHeight;

stringGrid.RowCount := stringGrid.RowCount + 1;

または、すべての行を追加してから追加するまでそのままにしておくこともできます。

stringGrid.Height := ((stringGrid.RowHeights[1] + stringGrid.GridLineWidth) *              
                      (stringGrid.VisibleRowCount + stringGrid.FixedRows)) + 3;
于 2012-10-30T04:54:34.440 に答える
1

何らかの価値がある場合に備えて、試行錯誤をあなたの研究に追加します.
TMS AdvStringGrid. TMS AdvStringGrid のイメージを次に示します。これは、多くの便利な拡張機能を備えた通常のストリング グリッドに大きく基づいていると思います。行を数えやすくするために、SnagIt を使用して画像を拡大し、ピクセルのグリッド線が見えるようにしました。グリッドの一番上の行に赤い線を追加しました。このグリッドでは、DefaultRowHeight は 21 に設定されています。赤い線の間にはそれぞれ 5 ピクセルあるため、DefaultRowHeight に 21 ピクセルを取得するには、高さ 1 ピクセルの stringgrid グリッド線を含める必要があります。このグリッドをロードするときは、次のコードを使用します。

with gridLimits do
    begin
      RowCount := 3;
      Cells[0, 0] := 'Maximum Amount';
      Cells[0, 1] := 'Maximum Base';
      Cells[0, 2] := 'Maximum Period';
      IntegralHeight := False;
      MyHeight := 0;
      for i := 0 to RowCount - 1 do
        inc(MyHeight, RowHeights[i]);
      Height := MyHeight + 5;
    end;
end;

SnagIt を使用してグリッドをキャプチャし、画面上のオブジェクトをキャプチャさせました。グリッドの周りに 1 ピクセルの灰色の線が含まれています。グリッドは実際には目に見えて青い線から始まるように見えるので、高さを取得するには、DefaultRowHeight の 3 倍と上の青い線と下の青い線を加算する必要があると思いますが、それを行ってクリックすると、一番下の行では、グリッドが上にスクロールします。高さに 3 を足すと上にスクロールします。高さに 4 を追加すると、スクロールしません。なぜ 5 に設定したのかわかりませんが、下に 1 ピクセルが多すぎることがわかるので、今は 4 に設定します。

グリッドの全体の高さを取得するには、上と下の灰色の線を追加する必要がある場合があります。そのため、SnagIt に含まれている灰色の線の場合、DefaultRowHeight に 3 を加えた上と下の線にさらに 2 を加えた値になります。

于 2012-10-30T17:53:11.613 に答える