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

投稿日: 2002/09/04(Wed) 09:49
投稿者花ちゃん
Eメール
URL
タイトルRe: コンボリスト表示

サンプルを作ってはいたのですが、UPしていなかったので。

Option Explicit     'SampleNo=167 WindowsXP VB6.0(SP5) 2002.07.15
'指定のウインドウにメッセージを送る(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

Private Const CB_SETDROPPEDWIDTH = &H160
Private StrHei As Long      'テキストの高さ
Private StrWid As Long      'テキストの幅

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 lngRet       As Long
    Dim MyString     As String
    myData = "12345ABCDEabcdeあいうえおアイウエオ子牛寅卯竜"
    Combo1.Clear
    For i = 1 To 10
        Randomize
        'ランダムな長さのランダムな文字列を作成
        strLen = CInt(20 * Rnd + 10)  '5 〜30 文字
        myStr = ""
        For j = 1 To strLen
            myStr = myStr & Mid$(myData, CInt(30 * Rnd + 1), 1)
        Next j
        Combo1.AddItem myStr
        '一番長い文字列を取得
        If n1 < LenB(StrConv(myStr, vbFromUnicode)) Then
            n1 = LenB(StrConv(myStr, vbFromUnicode))
            MyString = myStr
        End If
    Next i
    '一番長い文字列の幅を取得
    Call sMyTextSize(Combo1, MyString)
    'その幅をピクセル単位に変換し、スクロールバー分をプラス
    StrWid = (StrWid \ Screen.TwipsPerPixelX) + 30
    'リスト部の幅を文字列の長さに合せて設定
    lngRet = Sendmessage(Combo1.hWnd, CB_SETDROPPEDWIDTH, StrWid, ByVal 0&)
End Sub
Private Sub sMyTextSize(MyControl As Control, MyText As String)
'文字列の幅を取得
    Dim MeFoName As String
    Dim MeFoSize As Integer
    Dim MeFoBold As Boolean
    'フォームのフォント設定値を取得
    With Me
        MeFoName = Me.FontName
        MeFoSize = Me.FontSize
        MeFoBold = Me.FontBold
    End With
    'コントロールのフォント設定値をフォームに設定
    With Me
        .FontName = MyControl.FontName
        .FontSize = MyControl.FontSize
        .FontBold = MyControl.FontBold
        StrHei = .TextHeight(MyText)    '文字高さを取得
        StrWid = .TextWidth(MyText)     '文字列幅を取得
    End With
    'フォームのフォント設定値を元に戻す
    With Me
        Me.FontName = MeFoName
        Me.FontSize = MeFoSize
        Me.FontBold = MeFoBold
    End With
End Sub


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

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

- Web Forum -