Wednesday, July 6, 2011

Set ComboBox dropdown height in Visual Basic 6 (VB6) ComboBox control

Here is a useful piece of code to set the ComboBox dropdown height for VB6 ComboBox control.

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

Public Sub SetComboHeight(oComboBox As ComboBox, lNewHeight As Long)
    Dim oldscalemode As Integer
    ' This procedure does not work with frames: you cannot set the ScaleMode to vbPixels, because
    ' the frame does not have a ScaleMode Property.
    ' To get round this, you could set the parent control to be the form while you run this procedure.
    If TypeOf oComboBox.Parent Is Frame Then Exit Sub
    ' Change the ScaleMode on the parent to Pixels.
    oldscalemode = oComboBox.Parent.ScaleMode
    oComboBox.Parent.ScaleMode = vbPixels
    ' Resize the combo box window.
    MoveWindow oComboBox.hwnd, oComboBox.Left, oComboBox.Top, oComboBox.Width, lNewHeight, 1
    ' Replace the old ScaleMode
    oComboBox.Parent.ScaleMode = oldscalemode
End Sub

I've found this code on the web.
I would like to thanks to the original developer :-)