コンボボックスのリスト幅を変更
通常コンボボックスコントロールのリスト部分はテキスト部の表示幅と一致していますが この表示幅は 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)このサンプルを使用しての感想や、質問は 掲示板や、 らくがき帳に書きとめて頂けるとうれしいです。