VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 コンボボックス関係のメニュー
1.ComboBox に関するワンポイントテクニック集
2.コンボボックスのドロップダウンリストをプログラムから表示する
3.コンボボックスのテキスト部の高さを設定する
4.コンボボックスのドロップダウンリスト項目数を変更する
5.アイコン付のコンボボックスを作成する
6.コンボボックスで重複しない項目だけを追加登録する
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載しているコンボボックスに関するサンプル


4.コンボボックスのドロップダウンリスト項目数を変更する
1.コンボボックスのテキスト部の高さを設定する
2. 
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:
使用 API:SendMessage
その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.コンボボックスのドロップダウンリスト項目数を変更する

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レスキュー-(花ちゃん)"
    Combo2.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

'===== コンテナー上のコンボボックスの場合 =====
Private Sub Combo2_DropDown()
  'ドロップダウンリストの表示項目数を12に設定
  Call sCBDropDownListItem1(Combo2, 12)
End Sub

Private Sub sCBDropDownListItem1(CBControl As Control, Item As Long)
  Dim CBHeight As Long
  Dim Result  As Long
  Dim Ratio   As Long
  'ピクセルあたりのtwip 数を取得
  Ratio = Screen.TwipsPerPixelX
  With CBControl
    '項目の高さを取得
    CBHeight = SendMessage(.hwnd, CB_GETITEMHEIGHT, 0&, ByVal 0&)
    '12項目表示する場合の高さを求める
    CBHeight = (.Height \ Ratio) + CBHeight * Item + 2
    'コンボボックスの高さを変更
    Result = MoveWindow(.hwnd, .Left \ Ratio, .Top \ Ratio, .Width \ Ratio, CBHeight, 1&)
  End With
End Sub

  上記実行結果(画像は合成しています。)
 combobox04_01.gif

このページのトップへ移動します。 2. 



このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
ComboBox のドロップダウンリスト項目数を変更する



このページのトップへ移動します。