VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/02/01(Wed) 17:47
投稿者ダンボ
URL
タイトル[解決]MSFlexGridのリサイズで疑問

GOD さん、花ちゃん さん どうもありがとうございます。まとめ感謝です。

> grdFILES.Width はクライアント領域の幅ではなくグリッド全体の幅です。
あ、納得納得。大納得です。.ScaleWidthはちょっと頭を掠めたのだけれど。
GetClientRectを使って自分でバンバンすればよいんですね。
ColWidth(3)の負値、バグの元です。

> .Appearance = flexFlat
> .BorderStyle = flexBorderNone
> の場合 = 8 (線幅がいらないからスクロールの余裕分だけ)
こういうややこしい場合分けは嫌だから、MSFlexGridにも.ScaleWidthがあれば良いのに。。

#確かSSTabには.ClientWidthがあったような(未確認)
#多分、昔はFlatだけだったので不要だったが3D表示を追加したときに.ScaleWidth/.ClientWidthを手抜きで追加しなかったのだろう

こんな内部関数を作って対処しました。スクロールバーも除いたサイズを返してくれるので結構。

Private Function InnerWidth(CNT As Control) As Long
Dim RCT As RECT, rc As Long
    rc = GetClientRect(CNT.hWnd, RCT)
    InnerWidth = RCT.Right * Screen.TwipsPerPixelX - 8
End Function


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -