リストボックスにスクロールバーを設定 |
リストボックスに横スクロールバーを設定 (109) | |
Option Explicit 'SampleNo=109 WindowsXP VB6.0(SP5) 2002.05.21 '指定のウィンドウにメッセージを送る(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 Command1_Click() 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&) End Sub リストボックスのフォントをMS 明朝・ゴシックで12ポイントに設定して下さい。 これで文字列の長さ合った横スクロールバーが出来ます。 参考(文字ポイントと文字幅 単位=twip) MS 明朝・ゴシック 文字ポイント 半角幅 全角幅 9 90 180 10 105 195 11 120 225 12 120 240 9ポイントか12ポイントのフォント(Pでない)の使用をお奨めします。 |
2002/05/21