戻る



コンボボックスのドロップダウンリスト部の表示件数を変更する方法
動作環境 Windows95/98/2000/XP 開発環境 Visual Basic 6.0 (+SP5)
説明 コンボボックスコントロールのドロップダウンリスト部の表示件数を変更します
用意するもの:標準フォーム(Form1), コンボボックスコントロール(Combo1,Combo2)


'変数の明示的な宣言を強制します

Option Explicit

'API関数の利用を宣言します
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_GETITEMHEIGHT = &H154

'API関数の利用を宣言します
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

'変数を宣言します
Dim MY_CB_ITEMHEIGHT As Long

Private Sub Combo2_DropDown()

'変数を宣言します
Dim ret As Long
Dim CB_NEWHEIGHT As Long

'コンボボックスコントロールの高さを設定20の項目を表示できるようにします
'("+2"はドロップダウンリスト部の上下の境界線の高さ分)

CB_NEWHEIGHT = Combo2.Height + MY_CB_ITEMHEIGHT * 20 + 2

'コンボボックスコントロール(ウィンドウ)の位置とサイズを変更します
ret = MoveWindow(Combo2.hwnd, Combo2.Left, Combo2.Top, Combo2.Width, CB_NEWHEIGHT, True)

End Sub

Private Sub Form_Load()

'変数を宣言します
Dim i As Integer

'スケールモードをピクセル単位に設定します
Form1.ScaleMode = vbPixels

Combo1.Text = "Normal"
Combo2.Text = "Extention"

'コンボボックスコントロールにアイテムを設定します
For i = 1 To 30
Combo1.AddItem "data" & i
Combo2.AddItem "data" & i
Next

'コンボボックスコントロールの項目の高さを取得します
MY_CB_ITEMHEIGHT = SendMessage(Combo2.hwnd, CB_GETITEMHEIGHT, 0, 0&)

End Sub