ドロップダウンリスト項目数を変更 |
コンボボックスのドロップダウンリスト項目数を変更する (149) | |
Option Explicit 'SampleNo=149 WindowsXP VB6.0(SP5) 2002.06.16 '指定のウィンドウにメッセージを送る(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 '項目の高さを取得する(P784) Private Const CB_GETITEMHEIGHT = &H154 'ウィンドウの位置・サイズを変更する(P96) Private Declare Function MoveWindow Lib "user32" _ (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, _ ByVal nWidth As Long, ByVal nHeight As Long, _ ByVal bRepaint As Long) As Long Private Sub Form_Load() Dim i As Long For i = 1 To 30 Combo1.AddItem Format$(i, "@@ ") & "VBレスキュー(花ちゃん)" Next i End Sub Private Sub Combo1_DropDown() 'ドロップダウンリストの表示項目数を12に設定 Call sCBDropDownListItem(Combo1, 12) End Sub Private Sub sCBDropDownListItem(CBControl As Control, Item As Long) Dim CBHeight As Long Dim Result As Long Dim DefaultSM As Long DefaultSM = Me.ScaleMode '現在のスケールモードを保存 Me.ScaleMode = vbPixels 'スケールモードをピクセルに With CBControl '項目の高さを取得 CBHeight = SendMessage(.hwnd, CB_GETITEMHEIGHT, 0&, ByVal 0&) '12項目表示する場合の高さを求める CBHeight = .Height + CBHeight * Item + 2 'コンボボックスの高さを変更 Result = MoveWindow(.hwnd, .Left, .Top, .Width, CBHeight, 1&) End With Me.ScaleMode = DefaultSM 'スケールモードを元に戻す End Sub |
2002/06/16