设置Combo1下拉时显示的数目

z_jzhao 2012-09-19 05:06:57
我想设置Combo1下拉时,显示10个数据项,如何设置!
...全文
213 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sosoben 2012-09-20
  • 打赏
  • 举报
回复


'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
sosoben 2012-09-20
  • 打赏
  • 举报
回复
'设置   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



CSDN搜索的,试试行不行

其实用VB.net就可以了 有个属性可以设,用其他combobox控件也可以
z_jzhao 2012-09-20
  • 打赏
  • 举报
回复
就是如果设置10个数据以内,不显示滑动条,超过10数据再需利用滑动条滚动显示其它的数据。
z_jzhao 2012-09-20
  • 打赏
  • 举报
回复
上述操作只是向Combo1中添加了10个数据,我要的是当点开下拉时,10个数据全部显示,而不是还要用滑动条来滚动显示10个数据。
lliai 2012-09-20
  • 打赏
  • 举报
回复

For i = 1 To 10
Combo1.AddItem "hhhh"
Next i
twohorses 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
更改下拉区的高度:


VB code


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……
[/Quote]
收藏
of123 2012-09-20
  • 打赏
  • 举报
回复
更改下拉区的高度:


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
j505402103 2012-09-19
  • 打赏
  • 举报
回复
不用括号
j505402103 2012-09-19
  • 打赏
  • 举报
回复
For i = 1 To 10
Combo1.AddItem ("数据项")
Next i
更改combo1 style

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧