131-3 调整Listview控件的行距 在使用Listview控件显示数据列表时,行距是由Listview控件所设置的字体大小决定的,无法自定义行距,即使调整了字体大小,行距还是很近。 如果需要自定义Listview控件的行距,可以在窗体中添加一个ImageList控件,在ImageList控件中导入一张大小合适的空白图片,然后指定Listview控件的SmallIcons属性为ImageList控件中的图片,代码如下: Private Sub UserForm_Initialize() DimItm As ListItem Dimr As Integer Dimc As Integer DimImg As ListImage WithListView1 .ColumnHeaders.Add ,,'人员编号 ',50,0 .ColumnHeaders.Add ,,'技能工资 ',50,1 .ColumnHeaders.Add ,,'岗位工资 ',50,1 .ColumnHeaders.Add ,,'工龄工资 ',50,1 .ColumnHeaders.Add ,,'浮动工资 ',50,1 .ColumnHeaders.Add ,,'其他 ',50,1 .ColumnHeaders.Add ,,'应发合计',50,1 .View = lvwReport .Gridlines = True .FullRowSelect = True Set Img = ImageList1.ListImages.Add(,,LoadPicture(ThisWorkbook.Path & '\' &'1×25.bmp')) .SmallIcons = ImageList1 For r = 2 To Sheet1.[A65536].End(xlUp).Row- 1 Set Itm = .ListItems.Add() Itm.Text = Space(2) & Sheet1.Cells(r,1) For c = 1 To 6 Itm.SubItems(c) = Format(Sheet1.Cells(r,c + 1),'##,#,0.00') Next Next EndWith SetItm = Nothing SetImg = Nothing End Sub 代码解析: 用户窗体的Initialize事件过程,在窗体显示时将工作表中数据显示在Listview控件中并调整Listview控件的行距。 第17行代码使用Add方法在ImageList控件中添加图片。ImageList控件是一个向其他控件提供图像的资料中心,它包含了一组ListImage对象即一组图像的集合,该集合中的每个对象都可以通过其索引或关键字被其他控件所引用,但控件本身并不能单独使用。 在运行时给ImageList控件添加图片需要使用Add方法,语法如下: Add(index,key,picture) 参数index是可选的,整数,指定要插入的ListImage对象的位置。如果没有指定index,ListImage对象将被添加到ListImages集合的末尾。 参数key是可选的,用来标识ListImage对象的唯一字符串。 参数picture是必需的,指定欲添加到集合中的图片。 也可以在设计时在ImageList控件中添加图片,这样就无需在文件夹中保留图片文件。在VBE中选择ImageList控件属性页中的“自定义”,在显示的“属性页”对话框中插入图片。 第18行代码,指定Listview控件的SmallIcons属性为ImageList控件中的图片,使用图片来调整行距。运行窗体,Listview控件显示工作表中的内容,调整Listview控件的行距。 131-4 在Listview控件中排序 在使用Listview控件显示报表型的数据时,可能通过单击Listview控件的列标题对列表数据进行排序,代码如下: Private Sub ListView1_ColumnClick(ByVal ColumnHeaderAs MSComctlLib.ColumnHeader) WithListView1 .Sorted = True .SortOrder = (.SortOrder + 1) Mod 2 .SortKey = ColumnHeader.Index - 1 EndWith End Sub 代码解析: Listview控件的ColumnClick事件过程,单击列标题时触发,对列表数据进行升序或降序排序。 第3行代码将Listview控件的Sorted属性设置为True。Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序,设置为False则不进行排序。 第4行代码设置Listview控件的排序方式。SortOrder属性返回或设置一个值,决定ListView控件中的ListItem对象以升序或降序排序,设置为0以升序排序,设置为1则以降序排序。在设置SortOrder属性值时使用Mod运算符以达到第一次排序以降序排序,再次排序时以升序排序,交替进行的效果。 第5行代码设置Listview控件排序关键字的整数,即指定Listview控件以当前选定的列数据进排序。SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序,语法如下: object.SortKey [=integer] 参数object是必需的,对象表达式,其值为ListView控件。 参数integer是必需的,指定排序关键字的整数,设置为0使用ListItem对象的Text属性排序,即第一列的数据进行排序。设置为大于0的整数则使用子项目的集合索引排序。 运行窗体,Listview控件显示工作表中的内容,单击列标题对列表数据进行升序或降序排序。 131-5 Listview控件的图标设置 ListView 控件作为一个可以显示图标或者子项的列表控件,可以在控件中显示自定义的图标,它最重要的属性就是View 属性,该属性决定了以哪种视图模式显示控件的项,请参阅▲131-1。 在ListView 控件中显示图标,需要在用户窗体中添加一个ImageList控件用于保存图像文件。关于ImageList控件的使用请参阅▲131-3。 以大图标模式显示ListView控件的代码如下: Private Sub UserForm_Initialize() DimITM As ListItem Dimr As Integer WithListView1 .View = lvwIcon .Icons = ImageList1 For r = 2 To 6 Set ITM = .ListItems.Add() ITM.Text = Cells(r,1) ITM.Icon = r - 1 Next EndWith SetITM = Nothing End Sub 代码解析: 在用户窗体中以大图标模式显示ListView控件,可使用鼠标拖放图标,并重新排列。 第5行代码将ListView控件的View属性设置为lvwIcon,大图标视图模式。 第6行代码使用ListView控件的Icons 属性建立与ImageList控件的关联。 第7行到第11行代码在ListView控件中添加ListItem对象,其中第10行代码设置使用ListItem对象的Icon属性指定其图像文件在ImageList控件中的编号。 ListView控件以大图标视图模式显示时。以小图标模式显示ListView控件的代码如下: Private Sub UserForm_Initialize() DimITM As ListItem Dimr As Integer WithListView1 .View = lvwSmallIcon .SmallIcons = ImageList1 For r = 2 To 6 Set ITM = .ListItems.Add() ITM.Text = Sheet1.Cells(r,1) ITM.SmallIcon = r - 1 Next EndWith SetITM = Nothing End Sub 代码解析: 在用户窗体中以小图标模式显示ListView控件,可使用鼠标拖放图标,并重新排列。 第5行代码将ListView控件的View属性设置为lvwSmallIcon,小图标视图模式。 与大图标视图模式有所不同的是,当使用小图标视图模式时需要使用ListView控件的SmallIcons属性建立与ImageList控件的关联,使用ListItem对象的SmallIcon属性指定其图像文件在ImageList控件中的编号。 ListView控件以小图标视图模式显示时。 将ListView控件的View属性设置为lvwList,以列表视图模式显示。 将ListView控件的View属性设置为lvwReport,以报表视图模式显示。 |
|