Office中国论坛/Access中国论坛

标题: 【Access小品】列表框宽度自适应 [打印本页]

作者: todaynew    时间: 2010-7-22 11:11
标题: 【Access小品】列表框宽度自适应
  昨天根据版友石三少同志的问题编写了一个导入导出的实例,在这个实例中用到了列表框来显示不同表的数据,这样的处理有个好处可以不必考虑子窗体增减控件的问题。但是昨天的实例留下来一个小问题,就是不同的数据表列宽都是一致的,数据要么显示不全,要么留白太多,实在不美观。根据这样一个遗留问题,今日写就本实例,解决列表框列宽自适应记录宽度问题。
Function GetcomWidths(ctl As Control, ftSize As Long)
'功能:列表框字段框度自适应
'参数:ctl--列表框控件,ftSize--字号
'示例:GetcomWidths me.记录,10
Dim rs As New ADODB.Recordset
Dim i As Long, j As Long
Dim comWidths As String
Dim w As Single
rs.Open ctl.RowSource, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
ctl.FontSize = ftSize
For i = 0 To rs.Fields.Count - 1
    rs.MoveFirst
    w = 0
    For j = 1 To rs.RecordCount
        If Len(Nz(rs(i).Value, "")) > w Then w = Len(Nz(rs(i).Value, ""))
        rs.MoveNext
    Next
    If w > 20 Then w = 20
    w = 0.0353 * (w + 1) * ctl.FontSize
    comWidths = comWidths & w & " cm;"
Next
ctl.ColumnWidths = comWidths
rs.Close
End Function

[attach]42772[/attach]

[attach]42773[/attach]

作者: 5988143    时间: 2010-7-22 11:53
非常不錯的技巧~
作者: asklove    时间: 2010-7-22 15:38
学习
作者: ZHENGLIAN    时间: 2010-8-22 11:03
非常不錯的技巧~

作者: mrd_wxqs    时间: 2010-12-10 15:07
很虔诚地向前辈大师学习,谢谢!
作者: wufeng980114    时间: 2011-1-16 22:07
路过,学习
作者: 鱼儿游游    时间: 2011-1-16 22:09
这个实例太好了,多谢楼主!
作者: 鱼儿游游    时间: 2011-1-16 22:43
能有 LISTVIEW 宽度自适应 就更好了,呵呵
作者: miracle-y    时间: 2011-1-16 23:00
学习了
作者: yzt880    时间: 2013-1-17 22:40
有两个问题1是不能超过28列否则报错不能自适应,2是输入数字的时候一个数字多出一个空白格,就这样11111     ,无法解决。
作者: todaynew    时间: 2013-1-18 11:02
yzt880 发表于 2013-1-17 22:40
有两个问题1是不能超过28列否则报错不能自适应,2是输入数字的时候一个数字多出一个空白格,就这样11111   ...

超过28列报错不知道是什么原因。

没有进一步处理半角字符的问题,可以另加一个函数范围带有半角字符换算的长度。
作者: 笑嘻嘻哦    时间: 2013-2-15 21:29
适应度一定要掌握好




























欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3