タイトル | ドロップダウンリストの表示項目数を変更する |
対象言語 | VB4.0以降 |
動作確認OS | Windows95,98,NT4.0 |
使用関数 | SendMessage |
改築日 | 1999/09/11 |
Source Download |
コンボボックスのドロップダウンリストの表示する行数を変更します。 Accessの場合、プロパティが用意されていますが、 VBの場合、8行に固定されています。 コンボボックスの高さを、必要行数*1行の高さ+コンボ部の高さ+2 で計算して変更します。 |
1. フォームを作成しコンボボックス(Combo1)
を貼り付けてください。 Option Explicit Private Sub Form_Load() Dim i As Integer For i = 1 To 15 Combo1.AddItem Str$(i) Next '項目数を12行に設定 Call Y_SetComboListRows(Combo1.hwnd, 12) End Sub |
2.モジュールウインドウを作成し、下のソースを入力してください。 Option Explicit 'ウインドウにメッセージを送る Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Const CB_GETITEMHEIGHT = &H154 'コンボボックスのリスト項目の1行の高さを取得する 'ウインドウの大きさを取得する Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type 'ウインドウの位置とサイズを変更する Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Public Const SWP_NOMOVE = &H2 '移動しない Public Sub Y_SetComboListRows(hwnd As Long, Rows As Integer) '*********************************************************** '機能 : コンボボックスのリストボックスの表示項目数を変更する '引数 : hwnd = コンボボックスのウインドウハンドル ' Rows = 表示項目数 (8〜255) '*********************************************************** Dim longret As Long Dim iHeight As Long Dim CBHeight As Long Dim rct As RECT 'コンボボックスのサイズ(Pixcel)を取得する longret = GetClientRect(hwnd, rct) 'コンボボックスのリスト項目の高さ(Pixcel)を取得する iHeight = SendMessage(hwnd, CB_GETITEMHEIGHT, ByVal 0&, ByVal 0&) 'リストボックスを含んだ全体のコンボボックスの高さ(Pixcel)を求める CBHeight = iHeight * Rows + rct.Bottom + 2 'コンボボックスの高さを変更する longret = SetWindowPos(hwnd, 0&, 0&, 0&, rct.Right, CBHeight, SWP_NOMOVE) End Sub |
Copyright (C)1997-2001 空耳工房 MY2Project All rights reserved. |