listview控件可有4种不同的视图显示方法 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
listview控件可有4种不同的视图显示方法,跟“资源管理器”里的“查看”方式相似:(1)无图标;(2)小图标;(3)列表;(4)报表式。
使用哪种视图,可由该控件的view属性设置控制。
其中“报表”视图用来显示记录数据很适合。
listview控件包括listItem对象和ColumnHeader对象。
本人简单理解为:listItem对象看成数据行;ColumnHeader对象看成列标题。
listItem对象(行)有两部分:一部分是图标和简要描述的文本(第1列);另一部分是前者的子项文本信息(第2列,第3列......)。
而listItems即是对listItem对象集合(所有行)的引用。
故此,listItems(1) 可以表示为第1行;
listitems(1).text 返回第1行第1列的文本值;
listitems(1).subItem(1) 返回第1行第2列的文本值。
【控件常用属性】
[1]view属性
该属性有4个值可设定:
1---小图标视图显示
2---列表
3---报表
0---无图标(默认)
[2]AllowColumnReorder属性
值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列。
[3]Checkboxes属性
设置为.t.时,每一行数据前将显示一复选框。
[4]FlatScrollBar属性
设置为.f.时控件将显示滚动条。
[5]FullRowSelect属性
设置为.t.时可以整行地选择数据。
[6]GridLines属性
设置为.t.时控件将显示网格线。
(只作用于“报表”视图)
[7]HideColumnHeaders属性
设置为.f.时,列标题可视,反之则不可视。
[8]HotTracking属性
设置为.t.时,鼠标所在行将以高亮度显示。
[9]Icons,SmallIcons属性
两者设置listview控件视图相关联的ImageList控件中的图片。
Icons指明视图为大图标时的关联;
SmallIcons指明视图为小图标时的关联。
[10]LabelWrap属性
设置为.t.时,文本标签超出列宽时可换行。
[11]SelectedItem属性
返回对所选ListItem对象(行)的引用。
[12]Sorted属性
当值为.t.时,列表按字母排序。
[13]Picture属性
指定控件的背景图片,此属性在控件自带属性设置框里设置。
*****************************************************************
【控件常用方法程序】
[1]Add方法
添加listItem对象(行)到控件中。
语法格式:
控件ListItems集合.add(index,key,text,icon,smallIcon)
[2]FindItem方法
查找并返回对控件中listItem对象的引用。
语法格式:
控件名.FindItem(string,value,index,match)
****************************************************************** 新建一表单,在表单里拖出一个ListView控件和一个ImageList控件。
选中ListView控件,单击右键,选择“ListViewCtrl Properties”,在General页面框中选中下列复选框:
LabelWrap:文本可换行
Checkboxes:显示复选框
FullRowSelect:整行选定
清除FlatScrollBar的选定,控件将显示滚动条。
**************************************************************
控件name属性
ListView view1
ImageList Image1
*************************************************************** 在表单的Init事件中加入下列代码:
&&&&将ImageList控件图片赋予Listview控件&&&&
thisform.view1.Icons=thisform.Image1.object
thisform.view1.smallIcons=thisform.Image1.object
****************************************************************
在listview控件init事件中加入下列代码:
&&&初始化ListView控件&&&&
&&设置显示为报表视图
this.view=3
&&添加和设置列标
store this.ColumnHeaders.Add(,"l11","序号",this.Width/7) to clm1
store this.ColumnHeaders.Add(,"l12","物资编号",this.width/4) to clm2 store this.ColumnHeaders.Add(,"l13","存货名称",this.Width/4) to clm3 store this.ColumnHeaders.Add(,"l14","规格",this.width/4) to clm4
store this.ColumnHeaders.Add(,"l15","计量单位",this.Width/8) to clm5 store this.ColumnHeaders.Add(,"l16","请购数量",this.width/4) to clm6 store this.ColumnHeaders.Add(,"l17","使用日期",this.Width/4) to clm7 store this.ColumnHeaders.Add(,"l18","请购用途",this.width/4) to clm8 this.hottracking=.t. &&鼠标停留行高亮度显示
******************************************************************
将数据表添加到listview控件中显示:
新建一表单方法程序refresh_grid,可随时调用刷新数据。
在其中加入下列代码:
L1=thisform.view1
L1.listItems.clear &&清除数据
sele 请购表
scan
&&添加listItem对象第1列图标和文本。
store L1.listItems.Add(,,序号,,1) to bbb
&&添加第2,3...列文本
store alltrim(物资编号) to bbb.subitems(1)
store alltrim(存货名称) to bbb.subitems(2)
store alltrim(规格) to bbb.subitems(3)
store alltrim(计量单位) to bbb.subitems(4)
store 请购数量to bbb.subitems(5)
store 使用日期to bbb.subitems(6)
store alltrim(请购用途) to bbb.subitems(7)
endscan
注:若字段值为.null.时,添加时将出现错误提示。
请自行设置用函数加以判别。
为.null.时可以空值添加。
************************************************ 如何返回选定值:
L1=thisform.view1
L1.selectedItem.text &&返回选定行第1列文本值
L1.selectedItem.index &&返回选定行的位置
L1.listItems(x).subItems(y) &&返回第x行,第y+1列文本值*****
如何用用命令设置复选框状态:
thisform.view1.listItems(x).checked=.t.
&&第x行复选框选定
******************************************
选定复选框时发生的事件itemcheck:
LPARAMETERS item
if item.checked=.t.&&判定当复选框选中
要执行的语句
else
要执行的语句
endif
&&清除所有数据
thisform.view1.listItems.clear
&&清除选定行
L1=thisform.view1
L1.listitems.remove(L1.selectedItem.index)
得知所有行的总数:
L1.listitems.count
一个关于VB listview控件用法
2008年09月13日星期六下午 09:14
ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。
ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。
(图7)
ColumnHeader对象是ListView控件中包含标头文字的项目。
利用ColumnHeader对象,用户可以:
▲单击对象触发ColumnClick事件并根据数据项目将项目排序。
▲拖动对象的右边框来调整列宽度。
▲在报表视图中隐藏ColumnHeader对象。
ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。
删除ColumnHeader 对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。
ColumnHeader对象的SubItemIndex属性
该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。
子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。
第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。
列标头数目取决于子项目数目。
列标头数目总是比子项目数目多1。
在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。
ColumnHeader对象的Add方法
该方法的使用与前面那些控件基本相似,就不再介绍了。
ListView1.ColumnHeader.Add(index,key,text,width,alignment)
ListItem对象是指控件中的一行(不包含标头行)的所有内容。
它也可包含文本和图片,但是要使用图片则必须通过Icons和SmallIcons属性引用ImageList控件。
ListItem对象的SubItems属性
返回或设置一个字符串(子项目)数组,它代表ListView控件中ListItem对象的数据。
ListItem对象可包含任意多个的关联项目数据字符串(子项目),但每个ListItem对象子项目数目必须相同。
每个子项目都对应于相关的列标头,无法直接向子项目数组添加元素,只有通过ColumnHeaders的Add方法添加列标头的方法来添加子项目。
ListItem对象的Add方法
该方法添加ListItem对象到ListView控件的ListItems集合中并返回对新创建对象的引用。
它的语法如下:
ListItem1.Add(index,key,text,icon,smallIcon)
ListView控件的View属性
ListView控件可使用四种不同视图显示项目,这可以用View属性来确定。
该属性返回或设置ListView控件中ListItem对象的外观。
ListView控件的SortOrder,SortKey和Sorted属性
控件中的ListItem对象可以按要求进行排序,与排序有关的属性是SortOrder,Sorted和SortKey属性。
SortOrder属性返回或设置一个值,此值决定ListView控件中的ListItem对象以升序或降序排序。
SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序。
Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序的值。
下面的代码说明了如何创建ColumnHeaders和ListItem对象,SubItemIndex和SubItem属性的使用方法以及如何排序。
Private Sub Form_load()
'确保ListView控件的view属性为报表视图。
ListView1.View=lvwReport
'添加三列。
ListView1.ColumnHeaders.Add,"Name","姓名"
ListView1.ColumnHeaders.Add,"Sex","性别"
ListView1.ColumnHeaders.Add,"Age","年龄"
'向控件添加ListItem对象。
Dim itmX As ListItem
'添加column1的名称。
Set itmX=ListView1.ListItems.Add(1,"ZL","张力")
'使用SubItemIndex将SubItem与正确的ColumnHeader关联。
使用关键字("Sex")指定正确的ColumnHeader。
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
'使用ColumnHeader关键字将SubItems字符串与
'正确的ColumnHeader关联。
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"
Set itmX=ListView1.ListItems.Add(1,"LF","李芳")
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="22"
Set itmX=ListView1.ListItems.Add(1,"WW","王伟")
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader) Select Case ColumnHeader.Key
Case "Sex":ListView1.SortKey=1
ListView1.SortOrder=lvwAscending
ListView1.Sorted=True
Case "Age":ListView1.SortKey=2
ListView1.SortOrder=lvwAscending
ListView1.Sorted=True
End Select
End Sub
ListView1.ListItems.Item(1).SubItems(1)=Text1(1).text
式子左边的四个单词是什么意思?怎么会有三个英文句点?左边的含义是什么?
Sub form_load()
With Lvw
.ListItems.Add , , "asp"
.ListItems.Add , , "html"
.ListItems.Add , , "vbs"
.ListItems.Add , , "css"
End With
Dim j%
j = 2
Lvw.ListItems(j).Selected = True
End Sub
测试的时候不要在form_load加载listbox增加项目.不然运行的时候会看不出效果。
晕!Selected是指LisT前面那个小框框(复选框)!
不过好像真的不能自动选择..
因为平时我不怎么用这个东西..
反正Selected=True是不能的!
List.ListItems(2).Selected = True 表示第2行被选择(高亮);
List.ListItems(2).Checked = True 表示在List.Checkboxes为True时第2行前面的小框被钩选。
listview控件可有4种不同的视图显示方法,跟“资源管理器”里的“查看”方式相似:(1)无图标;(2)小图标;(3)列表;(4)报表式。
使用哪种视图,可由该控件的view属性设置控制。
其中“报表”视图用来显示记录数据很适合。
listview控件包括listItem对象和ColumnHeader对象。
本人简单理解为:listItem对象看成数据行;ColumnHeader对象看成列标题。
listItem对象(行)有两部分:一部分是图标和简要描述的文本(第1列);另一部分是前者的子项文本信息(第2列,第3列......)。
而listItems即是对listItem对象集合(所有行)的引用。
故此,listItems(1) 可以表示为第1行;
listitems(1).text 返回第1行第1列的文本值;
listitems(1).subItem(1) 返回第1行第2列的文本值。
【控件常用属性】
[1]view属性
该属性有4个值可设定:
1---小图标视图显示
2---列表
3---报表
0---无图标(默认)
[2]AllowColumnReorder属性
值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列。
[3]Checkboxes属性
设置为.t.时,每一行数据前将显示一复选框。
[4]FlatScrollBar属性
设置为.f.时控件将显示滚动条。
[5]FullRowSelect属性
设置为.t.时可以整行地选择数据。
[6]GridLines属性
设置为.t.时控件将显示网格线。
(只作用于“报表”视图)
[7]HideColumnHeaders属性
设置为.f.时,列标题可视,反之则不可视。
[8]HotTracking属性
设置为.t.时,鼠标所在行将以高亮度显示。
[9]Icons,SmallIcons属性
两者设置listview控件视图相关联的ImageList控件中的图片。
Icons指明视图为大图标时的关联;
SmallIcons指明视图为小图标时的关联。
[10]LabelWrap属性
设置为.t.时,文本标签超出列宽时可换行。
[11]SelectedItem属性
返回对所选ListItem对象(行)的引用。
[12]Sorted属性
当值为.t.时,列表按字母排序。
[13]Picture属性
指定控件的背景图片,此属性在控件自带属性设置框里设置。
************************************************************ *****
【控件常用方法程序】
[1]Add方法
添加listItem对象(行)到控件中。
语法格式:
控件ListItems集合.add(index,key,text,icon,smallIcon)
[2]FindItem方法
查找并返回对控件中listItem对象的引用。
语法格式:
控件名.FindItem(string,value,index,match)
************************************************************ ******
新建一表单,在表单里拖出一个ListView控件和一个ImageList控件。
选中ListView控件,单击右键,选择“ListViewCtrl Properties”,在General 页面框中选中下列复选框:
LabelWrap:文本可换行
Checkboxes:显示复选框
FullRowSelect:整行选定
清除FlatScrollBar的选定,控件将显示滚动条。
************************************************************ **
控件name属性
ListView view1
ImageList Image1
************************************************************ ***
在表单的Init事件中加入下列代码:
&&&&将ImageList控件图片赋予Listview控件&&&&
thisform.view1.Icons=thisform.Image1.object
thisform.view1.smallIcons=thisform.Image1.object
************************************************************ ****
在listview控件init事件中加入下列代码:
&&&初始化ListView控件&&&&
&&设置显示为报表视图
this.view=3
&&添加和设置列标
store this.ColumnHeaders.Add(,"l11","序号
",this.Width/7) to clm1
store this.ColumnHeaders.Add(,"l12","物资编号
",this.width/4) to clm2
store this.ColumnHeaders.Add(,"l13","存货名称
",this.Width/4) to clm3
store this.ColumnHeaders.Add(,"l14","规格
",this.width/4) to clm4
store this.ColumnHeaders.Add(,"l15","计量单位
",this.Width/8) to clm5
store this.ColumnHeaders.Add(,"l16","请购数量
",this.width/4) to clm6
store this.ColumnHeaders.Add(,"l17","使用日期
",this.Width/4) to clm7
store this.ColumnHeaders.Add(,"l18","请购用途
",this.width/4) to clm8
this.hottracking=.t. &&鼠标停留行高亮度显示
************************************************************ ******
将数据表添加到listview控件中显示:
新建一表单方法程序refresh_grid,可随时调用刷新数据。
在其中加入下列代码:
L1=thisform.view1
L1.listItems.clear &&清除数据
sele 请购表
scan
&&添加listItem对象第1列图标和文本。
store L1.listItems.Add(,,序号,,1) to bbb
&&添加第2,3...列文本
store alltrim(物资编号) to bbb.subitems(1)
store alltrim(存货名称) to bbb.subitems(2)
store alltrim(规格) to bbb.subitems(3)
store alltrim(计量单位) to bbb.subitems(4)
store 请购数量to bbb.subitems(5)
store 使用日期to bbb.subitems(6)
store alltrim(请购用途) to bbb.subitems(7)
endscan
注:若字段值为.null.时,添加时将出现错误提示。
请自行设置用函数加以判别。
为.null.时可以空值添加。
************************************************
如何返回选定值:
L1=thisform.view1
L1.selectedItem.text &&返回选定行第1列文本值
L1.selectedItem.index &&返回选定行的位置
L1.listItems(x).subItems(y) &&返回第x行,第y+1列文本值
*****
如何用用命令设置复选框状态:
thisform.view1.listItems(x).checked=.t.
&&第x行复选框选定
******************************************
选定复选框时发生的事件itemcheck:
LPARAMETERS item
if item.checked=.t.&&判定当复选框选中
要执行的语句
else
要执行的语句
endif
&&清除所有数据
thisform.view1.listItems.clear
&&清除选定行
L1=thisform.view1
L1.listitems.remove(L1.selectedItem.index)
得知所有行的总数:
L1.listitems.count
================================================ ================================================ ==
Private Sub Command1_Click()
ListView1.ColumnHeaders.Add , , "列1"
ListView1.ColumnHeaders.Add , , "列2"
ListView1.ColumnHeaders.Add , , "列3"
Dim i As Integer
For i = 1 To 9
ListView1.ListItems.Add , , "列1的内容"
ListView1.ListItems(i).SubItems(1) = "列" & 9 - i & "的内容"
ListView1.ListItems(i).SubItems(2) = "列3的内容"
End Sub
Private Sub Form_Load()
ListView1.View = lvwReport
ListView1.Sorted = True '这一句至关重要
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader) '这个过程单击时排序
ListView1.SortKey = ColumnHeader.Index - 1
End Sub
================================================ ===============
Private Sub Form_Load()
ListView1.View = 3
'ListView1.FullRowSelect = True '这个功能是选中全行,在6.0中使用
ListView1.ColumnHeaders.Add , "a", "No", 200
ListView1.ColumnHeaders.Add , "b", "问题", 1500
ListView1.ColumnHeaders.Add , "c", "状态", 900
ListView1.ColumnHeaders.Add , "d", "回答数", 900
End Sub
Private Sub Command110_Click()
Dim i
For i = 0 To List002.ListCount - 1
ListView1.ListItems.Add , "a" & i, CStr(i + 1) '将数目添加到ListView1第一列ListView1.ListItems("a" & i).SubItems(1) = List002.List(i) '将list002添加到ListView1第二列
ListView1.ListItems("a" & i).SubItems(2) = Space(1) & List5.List(i) '将list5加到ListView1第三列
ListView1.ListItems("a" & i).SubItems(3) = Space(1) & List7.List(i) '将list7加到ListView1第四列
Next
End Sub。