7,765
社区成员
发帖
与我相关
我的任务
分享
'API声明如下
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 Declare Function SendMessage Lib "USER32 " Alias "SendMessageA " _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Const CB_GETDROPPEDWIDTH = &H15F
Private Const CB_SETDROPPEDWIDTH = &H160
Private Const CB_ERR = -1
Const CB_SHOWDROPDOWN = &H14F
Dim bDrop As Boolean
Private isDo As Boolean
'设置 Combo 下拉的高度
'单位为 pixels
Public Sub SetComboHeight(oComboBox As ComboBox, lNewHeight As Long)
Dim oldscalemode As Integer
If TypeOf oComboBox.Parent Is Frame Then Exit Sub
oldscalemode = oComboBox.Parent.ScaleMode
oComboBox.Parent.ScaleMode = vbPixels
MoveWindow oComboBox.hwnd, oComboBox.Left, oComboBox.Top, oComboBox.Width, lNewHeight, 1
oComboBox.Parent.ScaleMode = oldscalemode
End Sub
Private Sub Form_Load()
isDo = True
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
Combo1.AddItem "FDSAF "
End Sub
Private Sub Command1_Click() '改变combo1下拉的高度
Call SetComboHeight(Combo1, 250)
End Sub
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, _
lpRect As RECT) As Long
Private Declare Function ScreenToClientAny Lib "user32" Alias "ScreenToClient" _
(ByVal hWnd As Long, lpPoint As Any) As Long
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
' Set a new height for the list area of a ComboBox control
'
' NEWHEIGHT is measured in pixels
Sub ComboBoxSetHeight(CB As ComboBox, ByVal newHeight As Long)
Dim lpRect As RECT
Dim wi As Long
' get combobox rectangle, relative to screen
GetWindowRect CB.hWnd, lpRect
wi = lpRect.Right - lpRect.Left
' convert to form's client coordinates
ScreenToClientAny CB.Parent.hWnd, lpRect
' enforce the new height
MoveWindow CB.hWnd, lpRect.Left, lpRect.Top, wi, newHeight, True
End Sub