3.リストボックス(ListBox)に横スクロールバーを設定 |
1.リストボックス(ListBox)に横スクロールバーを設定 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:SendMessage その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 :
|
1.リストボックス(ListBox)に横スクロールバーを設定 |
Option Explicit '指定のウィンドウにメッセージを送る(P750) Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long '水平スクロール幅を設定する(P826) Private Const LB_SETHORIZONTALEXTENT = &H194 Private Sub Form_Load() Dim i As Integer Dim j As Integer Dim strLen As Integer Dim n1 As Integer Dim myStr As String Dim myData As String Dim lngListWidth As Long Dim lngRet As Long myData = "12345ABCDEabcdeあいうえおアイウエオ子牛寅卯竜" List1.Clear 'テスト用のダミーのデータを登録しながら、文字列長を計測 For i = 1 To 10 'ランダムな長さのランダムな文字列を作成 strLen = CInt(41 * Rnd + 10) '10 ~50 文字 myStr = "" For j = 1 To strLen myStr = myStr & Mid$(myData, CInt(30 * Rnd + 1), 1) Next j List1.AddItem myStr '一番長い文字列を取得 If n1 < LenB(StrConv(myStr, vbFromUnicode)) Then n1 = LenB(StrConv(myStr, vbFromUnicode)) End If Next i ' 半角 全角 半角 全角 '9 ポイント 90 180 12ポイント 120 240 '水平スクロールバーの長さを計算する(表示文字数を知らべて下さい) ' 120(文字の幅) * n1(半角文字数) +240(1文字分の余白) ピクセル単位に変換 lngListWidth = ((120 * n1) + 240) \ Screen.TwipsPerPixelX '水平スクロールバーを表示 lngRet = SendMessage(List1.hWnd, LB_SETHORIZONTALEXTENT, lngListWidth, ByVal 0&) '上記で計測する場合は、等幅フォントの使用が望ましい。 '又は、下記のようにして計測する事もできます。(こちらは、等幅フォントでなくてもOKです。) Me.FontName = List1.FontName Me.FontSize = List1.FontSize n1 = 0 For i = 0 To List1.ListCount - 1 If n1 < Me.TextWidth(List1.List(i)) Then n1 = Me.TextWidth(List1.List(i)) End If Next i n1 = (n1 + 240) \ Screen.TwipsPerPixelX '水平スクロールバーを表示 lngRet = SendMessage(List1.hWnd, LB_SETHORIZONTALEXTENT, n1, ByVal 0&) '又は、予めスクロールバーの表示幅を長めに設定するような場合は、計測する必要はありません。 '下記の1行だけで OK です。(表示行数が多いような場合に向いています) lngRet = SendMessage(List1.hWnd, LB_SETHORIZONTALEXTENT, 700, ByVal 0&) End Sub |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
リストボックスに水平スクロールバーを表示する ListBox に水平スクロールバーを表示する リストボックスに文字列長に合わせた水平スクロールバーを表示する リストボックスに関するサンプル集 ListBoxに関するサンプル集 |