コンボボックスのリスト幅を変更




通常コンボボックスコントロールのリスト部分はテキスト部の表示幅と一致していますが
この表示幅は SendMessage() API で容易に変更することができます。

サンプルは以下のとおりです。

*---------*---------*---------*---------*---------*---------*---------*---------*

フォームにコンボボックスをひとつ配置し(オブジェクト:Combo1)以下のコードを
フォームモジュールに貼り付けて実行してみてください。

Option Explicit

Private Declare Function SendMessageByNum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const CB_SETDROPPEDWIDTH = &H160

Private Sub Form_Load()
  Dim cx&
  Combo1.AddItem String$(20, "A")
  Combo1.AddItem String$(20, "B")
  Combo1.AddItem String$(20, "C")
  Combo1.AddItem String$(20, "D")
  Combo1.AddItem String$(20, "E")
  Combo1.AddItem String$(20, "F")
  cx = Me.TextWidth(String$(30, "A")) \ Screen.TwipsPerPixelX
  SendMessageByNum Combo1.hwnd, CB_SETDROPPEDWIDTH, cx, 0
End Sub

コンボボックスを開いて見て下さい。
サンプルでは文字 "A" が 30個入るくらいの幅にしています。



動作確認

Windows98 Second Edition + Visual Basic 6 (+SP4)


このサンプルを使用しての感想や、質問は 掲示板や、 らくがき帳に書きとめて頂けるとうれしいです。


戻る


インデックスに戻る


e[NECir Yahoo yV LINEf[^[z500~`I
z[y[W NWbgJ[h COiq@COsI COze