1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > ListView控件数据操作——添加表头和数据

ListView控件数据操作——添加表头和数据

时间:2020-11-24 01:46:20

相关推荐

ListView控件数据操作——添加表头和数据

ListView控件数据操作

一、添加表头和数据

在窗口显示数据时,经常会用到ListView这个控件,虽然也可以使用ListBox,但其功能还是比较弱一些,ListView相对用起来更顺手一些。下面的两个函数是给控件添加表头和数据的函数,贴出来供大家参考。

函数代码

给ListView添加数据,数据可以为数组或单行数据(逗号分隔)

Public Sub AddListViewData(ListViewName As Object, DateArr, Optional Header As Integer = 0, Optional AddData As Boolean = False)'添加ListView数据,正常为数组,支持单行数据添加(逗号分隔)'第一行数据为标题行时,Header应为1'默认为替换数据,如果需要在原有数据基础上添加时,AddData应为TrueDim i As Integer, j As IntegerDim DateCol() As StringDim Itm As ObjectDim PartKey As StringIf Not AddData Then ListViewName.ListItems.ClearIf IsArray(DateArr) ThenFor i = LBound(DateArr) + Header To UBound(DateArr)Set Itm = ListViewName.ListItems.Add()Itm.Text = DateArr(i, LBound(DateArr, 2))For j = LBound(DateArr, 2) + LBound(DateArr) To UBound(DateArr, 2)Itm.SubItems(j - LBound(DateArr)) = DateArr(i, j)NextNextElseIf IsEmpty(DateArr) Or DateArr = "没有记录" Then Exit SubDateCol = Split(DateArr, ",")Set Itm = ListViewName.ListItems.Add()Itm.Text = DateCol(LBound(DateCol))For i = LBound(DateCol) + LBound(DateArr) To UBound(DateCol)Itm.SubItems(i - LBound(DateArr)) = DateCol(i)NextEnd IfEnd Sub

给ListView添加表头,支持直接给定宽度和额外增加的宽度

Public Sub AddListViewHead(ListViewName As Object, ColHeader, Optional ColWidth As String, Optional AddWidth As Integer = 5, Optional DefultWidth As String = "Auto")Dim SpHeader() As StringDim SpWidth() As StringDim SpAlign() As StringDim CW As IntegerDim CA As IntegerDim i As IntegerListViewName.ColumnHeaders.ClearListViewName.ListItems.ClearSpWidth = Split(ColWidth, ",")If UBound(SpWidth) = 0 Then CW = Val(ColWidth)With ListViewNameIf IsArray(ColHeader) ThenFor i = LBound(ColHeader, 2) To UBound(ColHeader, 2)If i <= UBound(SpWidth) Then CW = Val(SpWidth(i)) Else CW = IIf(DefultWidth = "Auto", 0, CW)If CW >= 0 And CW < Len(StrConv(ColHeader(0, i), vbFromUnicode)) * 15 + AddWidth Then CW = Len(StrConv(ColHeader(0, i), vbFromUnicode)) * 15 + AddWidthIf CW < 0 Then CW = 0.ColumnHeaders.Add , , ColHeader(0, i), CWNextElseIf ColHeader = "操作不成功" Then Exit SubSpHeader = Split(ColHeader, ",")For i = LBound(SpHeader) To UBound(SpHeader)If i <= UBound(SpWidth) Then CW = Val(SpWidth(i)) Else CW = IIf(DefultWidth = "Auto", 0, CW)If CW >= 0 And CW < LenB(StrConv(SpHeader(i), vbFromUnicode)) * 7.5 + AddWidth Then CW = LenB(StrConv(SpHeader(i), vbFromUnicode)) * 7.5 + AddWidthIf CW < 0 Then CW = 0.ColumnHeaders.Add , , SpHeader(i), CWNextEnd If.View = lvwReport.FullRowSelect = True.Gridlines = TrueEnd WithEnd Sub

调用例子

Sub FormLoad()AddListViewHead 列表, Range("A1:D1").Valuetmp = SumArrRow(Range("a1:c4").Value, "1,3", True)AddListViewData 列表, tmpEnd Sub

ListView控件数据操作系列未完,待续!

——专注办公软件的二次开发及培训,你有问题,我有思路!

——微博、微信、CSDN同号:w_dexu

——转载请注明出处!

扫码加微信

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。