VB ListBox 添加横向滚动条

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 LB_SETHORIZONTALEXTENT = &H194
--------------------------------------------------------------------------------------------------
Private Sub setListWidth()
'如果列表框不够宽,则增加水平滚动条
Dim i As Integer
Dim List_MaxL As Integer
'获得选项内容的最大长度
For i = To List1.ListCount -
''让list_maxl中保存最长的一条字串
If Len(List1.List(i)) > List_MaxL Then
List_MaxL = Len(List1.List(i)) +
End If
Next i
'判断是否内容显示不完全,如果是则添加水平滚动条
If Me.TextWidth("AA ") * List_MaxL > List1.Width Then
SendMessage List1.hwnd, LB_SETHORIZONTALEXTENT, Me.TextWidth("a") * List_MaxL, ByVal &
End If
End Sub
--------------------------------------------------------------------------------------------------
Private Sub Form_Load()
Dim i As Integer
'为ListBox控件添加选项
For i = To
List1.AddItem ("这是,最据jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj:(第 " + CStr(i)) & "行) "
'List1.AddItem ( "(第 " + CStr(i)) & "行) "
Next i
' 设置窗体坐标尺度模式和字体大小
Me.ScaleMode = vbPixels
Me.FontSize = List1.FontSize
设置列表框的水平滚动条
Call setListWidth
End Sub '方法二:-----------------------------------------------------------------------------------------------
'添加 ListBox 水平滚动条-------------------------------------------------
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, _
ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat 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 Const LB_SETHORIZONTALEXTENT = &H194
Const DT_CALCRECT = &H400 Public Function ListTextWidth(ByRef lstThis As ListBox) As Long '获取最长项目的象素长度值
Dim i As Long
Dim tR As RECT
Dim lW As Long
Dim lWidth As Long
Dim lHDC As Long
With lstThis.Parent.Font
.Name = lstThis.Font.Name
.Size = lstThis.Font.Size
.Bold = lstThis.Font.Bold
.Italic = lstThis.Font.Italic
End With
lHDC = lstThis.Parent.hdc
For i = To lstThis.ListCount - '遍历所有的列表项以找到最长的项
DrawText lHDC, lstThis.List(i), -, tR, DT_CALCRECT
lW = tR.Right - tR.Left +
If lW > lWidth Then lWidth = lW
Next
ListTextWidth = lWidth + '返回最长列表项的长度(像素)
End Function
Private Sub Form_Load()
'设置 List 横向滚动条
dim l As Long
l = ListTextWidth(ltCol)
SendMessage ltCol.hwnd, LB_SETHORIZONTALEXTENT, l, End Sub

 
 

上一篇:Oracle课程档案,第四天


下一篇:js new一个函数和直接调用函数的区别