リストボックスを両方向にスクロールするには?


パルマ  2003-09-10 15:46:14  No: 108638  IP: [192.*.*.*]

さきほど投稿したものですが、
ファイルリストボックスではなく、
普通のリストボックスの間違いでした。
すみません。

改めて質問させていただきます。

リストボックスの内容が横に長すぎて、全部を見ることができません。
Columnプロパティを変えるのではなくて、
両方向にスクロールをさせたいのですが、
どうやってよいのかわかりません。

わかる方アドバイスよろしくお願いします。

編集 削除
nanashi  2003-09-10 16:31:26  No: 108639  IP: [192.*.*.*]

適当ですけど、こんな感じかな。

'APIと定数の宣言
Private Declare Function SendMessage _
    Lib "user32.dll" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Any) _
        As Long

Private Const LB_SETHORIZONTALEXTENT As Long = &H194&


    '横スクロールバーを追加
    With List1
        For lCnt = 0 To .ListCount - 1
            lBuff = Me.TextWidth(.List(lCnt)) 'フォームのフォント設定と違う場合は注意!
            If lBuff > lWidth Then
                lWidth = lBuff
            End If
        Next
        
        lWidth = lWidth / Screen.TwipsPerPixelX + 5 '適当に余白を持たせます。
        Call SendMessage(.hwnd, LB_SETHORIZONTALEXTENT, lWidth, ByVal 0&)
    End With

編集 削除
パルマ  2003-09-10 16:36:05  No: 108640  IP: [192.*.*.*]

レスありがとうございます。

早速やってみたいと思います。

ところで書き忘れたんですけど、
このやり方はVB5.0でも使えますか?

編集 削除
nanashi  2003-09-10 17:22:30  No: 108641  IP: [192.*.*.*]

試してないけど大丈夫だと思う。

編集 削除