• 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 = 0 To List1.ListCount - 1 ''让list_maxl中保存最长的一条字串 If Len(List1.List(i)) > List_MaxL Then List_MaxL = Len(List1.List(i)) + 2 End If Next i '判断是否内容显示不完全,如果是则添加水平滚动条 If Me.TextWidth("AA ") * List_MaxL > List1.Width Then SendMessage List1.hwnd, LB_SETHORIZONTALEXTENT, Me.TextWidth("a") * List_MaxL, ByVal 0& End If End Sub
    --------------------------------------------------------------------------------------------------
    Private Sub Form_Load()
          Dim i     As Integer
          '为ListBox控件添加选项
          For i = 0 To 100
                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 = 0 To lstThis.ListCount - 1 '遍历所有的列表项以找到最长的项
    DrawText lHDC, lstThis.List(i), -1, tR, DT_CALCRECT
    lW = tR.Right - tR.Left + 8
    If lW > lWidth Then lWidth = lW
    Next
    ListTextWidth = lWidth + 20 '返回最长列表项的长度(像素)
    End Function

    Private Sub Form_Load()
    '设置 List 横向滚动条
    dim l As Long
    l = ListTextWidth(ltCol)
    SendMessage ltCol.hwnd, LB_SETHORIZONTALEXTENT, l, 0
    
    End Sub
    
    
    
     
     



  • 相关阅读:
    vue与mui起冲突
    pc端使用微信登陆
    文字显示两行,多余的省略号(兼容搜狐)
    ios input 添加 readonly 属性,光标依旧还在的解决办法
    调用微信扫一扫接口扫描二维码
    js搜索框实现自动搜索功能
    跳转页面的几种方法
    关于清空object对象里的属性的两种方法
    http://stormzhang.com/opensource/2016/06/26/android-open-source-project-recommend1/
    给 Android 初学者的 Gradle 知识普及
  • 原文地址:https://www.cnblogs.com/wx881208/p/4180035.html
Copyright © 2020-2023  润新知