MSFlexGrid で表示しているセルにあわせて Widthを決めたいのですが、
CellWidth や ColWidth や GridLineWidth をあわせて計算してもセルがぴたっ
と内部領域に収まってくれません。
Colw = MSFlexGrid1.ColWidth(0) * MSFlexGrid1.Cols
MSFlexGrid1.Width = Colw + MSFlexGrid1.GridLineWidth * PixelX * (MSFlexGrid1.Cols + 1)
Roww = MSFlexGrid1.RowHeight(0) * MSFlexGrid1.Rows
MSFlexGrid1.Height = Roww + MSFlexGrid1.GridLineWidth * PerPixelY * (MSFlexGrid1.Rows + 1)
続き
と記述しています。
Widthはよいですが、Height の方がうまく収まってくれません。
ColWidth も RowHeight も全て同じサイズで作っています。
(2行目の PixelXは PerPixelX です)
ぴたっと収まる方法があったら教えて下さい。
下記ではどうですか?
For i = 0 To MSFlexGrid1.Rows - 1
h = h + MSFlexGrid1.RowHeight(i)
Next i
'スクロールバーの高さ(98)をプラス
MSFlexGrid1.Height = h + 98
VB6.0(SP5) WinXP では一応OKでした。
スクロールバーなしの場合は
MSFlexGrid1.Height = h + 98
でOKでした。この98は計算で求められないのしょうか?
なんか今一つ納得いきません。
>スクロールバーなしの場合は
> MSFlexGrid1.Height = h + 98
> でOKでした。この98は計算で求められないのしょうか?
> なんか今一つ納得いきません。
何が納得いかないか知りませんが、スクロールバーの高さを求めたいなら
API関数を使って求めて下さい(自分で調べて)
訂正
スクロールバーの高さではなく 枠線の幅ですね。
API関数を調べたけどわかりませんでした。
それで、市販のVS−FLEXGRID PROとかいうコンポーネントを買って
試したところ問題は解決しました。
ツイート | ![]() |