リストボックスで長い文字列を見るには?

解決


初心者  2004-01-07 22:26:05  No: 111109  IP: [192.*.*.*]

リストボックスでWIDTHのサイズより
長い文字列を最後まで見れるようにしたいのですが
水平スクロールバーを使ってどのようにすればよいでしょうか?

編集    削除
魔界の仮面弁士  2004-01-07 22:44:14  No: 111110  IP: [192.*.*.*]

VB.NETの場合は、HorizontalScrollbarプロパティをTrueにすればOKです。

VB6の場合は、その機能が用意されていないので、APIに頼る必要があります。
(LB_SETHORIZONTALEXTENTメッセージに付いて調べてみてください)

編集    削除
たかみちえ  URL  2004-01-07 22:57:42  No: 111111  IP: [192.*.*.*]

水平スクロールバーという手もありますけど、
ツールチップやステータスバーを利用するという手もありますよ。
  場所にも夜かもしれませんけど、水平バーは動かしにくいですからね。キーボードの十字ボタンじゃ動かないし、ホイールでもできないから。

編集    削除
初心者  2004-01-07 23:22:43  No: 111112  IP: [192.*.*.*]

APIというのがさっぱりわからないのでもう少し勉強してみます。
ありがとうございました。

編集    削除
初心者  2004-01-08 01:12:01  No: 111113  IP: [192.*.*.*]

Declare Function SendMessageByNum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Const LB_SETHORIZONTALEXTENT = &H194

Private Sub Form_Load()
    Dim lngWidth As Long
    Dim i As Integer
    List1.AddItem text1.Text

    For i = 0 To List1.ListCount - 1
        If lngWidth < TextWidth(List1.List(i) & " ") Then
            lngWidth = TextWidth(List1.List(i) & " ")
        End If
    Next

If ScaleMode = vbTwips Then
        lngWidth = lngWidth / Screen.TwipsPerPixelX
    End If

Call SendMessageByNum(List1.hwnd, LB_SETHORIZONTALEXTENT,lngWidth, 0)
End Sub

こんなかんじで何とかできました。
ありがとうございました。

編集    削除