MSFlexGrid でセルが入るように Width を決めたい

解決


ジム  2004-09-05 04:26:39  No: 116184  IP: [192.*.*.*]

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)

編集 削除
ジム  2004-09-05 04:34:45  No: 116185  IP: [192.*.*.*]

続き

    と記述しています。
    Widthはよいですが、Height の方がうまく収まってくれません。
    ColWidth も RowHeight も全て同じサイズで作っています。
    (2行目の PixelXは PerPixelX です)
    ぴたっと収まる方法があったら教えて下さい。

編集 削除
花ちゃん  2004-09-06 14:57:26  No: 116186  IP: [192.*.*.*]

下記ではどうですか?

    For i = 0 To MSFlexGrid1.Rows - 1
        h = h + MSFlexGrid1.RowHeight(i)
    Next i
    'スクロールバーの高さ(98)をプラス
    MSFlexGrid1.Height = h + 98

VB6.0(SP5) WinXP では一応OKでした。

編集 削除
ジム  2004-09-06 23:24:46  No: 116187  IP: [192.*.*.*]

スクロールバーなしの場合は
    MSFlexGrid1.Height = h + 98
    でOKでした。この98は計算で求められないのしょうか?
    なんか今一つ納得いきません。

編集 削除
花ちゃん  2004-09-07 10:30:31  No: 116188  IP: [192.*.*.*]

>スクロールバーなしの場合は
>    MSFlexGrid1.Height = h + 98
>    でOKでした。この98は計算で求められないのしょうか?
>    なんか今一つ納得いきません。

何が納得いかないか知りませんが、スクロールバーの高さを求めたいなら
API関数を使って求めて下さい(自分で調べて)

編集 削除
花ちゃん  2004-09-07 11:07:48  No: 116189  IP: [192.*.*.*]

訂正
スクロールバーの高さではなく  枠線の幅ですね。

編集 削除
ジム  2004-09-09 01:45:51  No: 116190  IP: [192.*.*.*]

API関数を調べたけどわかりませんでした。
それで、市販のVS−FLEXGRID  PROとかいうコンポーネントを買って
試したところ問題は解決しました。

編集 削除