VB ListView的使用
VB中ListView的用法
VB中ListView的用法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指明视图为小图标时的关联。
vbalistview复选框优先
vbalistview复选框优先摘要:1.VBListView 控件概述2.VBListView 的复选框功能3.如何设置VBListView 的复选框优先级4.实际应用示例正文:一、VBListView 控件概述VBListView 是一款功能强大的列表视图控件,广泛应用于各种桌面应用程序和移动应用程序中。
它提供了丰富的属性和事件,以满足不同场景下的需求。
VBListView 控件可以显示一个列表,用户可以通过单击、拖动或键盘导航来选择列表中的项。
二、VBListView 的复选框功能VBListView 控件支持复选框功能,用户可以通过勾选或取消勾选列表中的项来选择多个项目。
复选框功能为列表视图控件提供了更多的交互方式,提高了用户体验。
三、如何设置VBListView 的复选框优先级在VBListView 中,可以通过设置控件的属性来调整复选框的优先级。
具体操作如下:1.打开VBListView 控件的属性编辑器。
2.在属性编辑器中,找到“Options”属性,并单击它。
3.在“Options”属性的列表中,找到“EnableMultiselection”属性,并勾选或取消勾选它。
勾选该属性后,VBListView 控件将启用复选框功能;取消勾选后,将禁用复选框功能。
4.如果需要调整复选框的样式,可以找到“CheckBoxStyle”属性,并设置相应的值。
例如,可以将复选框设置为始终可见(“always”)、仅在鼠标悬停时显示(“whenMouseOver”)或仅在选中时显示(“whenSelected”)。
四、实际应用示例假设我们需要为一个员工名单列表添加复选框功能,以便用户可以选择多个员工进行处理。
vba listview 对齐方式
vba listview 对齐方式VBA Listview对齐方式在基于Microsoft Office的开发中,Visual Basic for Applications (VBA) 是一种非常强大而又广泛使用的编程语言。
Listview是VBA中一个常用的控件,用于显示和管理数据列表。
它允许用户以可视化的方式浏览、选择和编辑数据。
对齐方式是控制Listview中数据显示格式的一种重要设置。
通过设置对齐方式,我们可以控制文本和图像在Listview中的水平和垂直位置。
本文将详细介绍VBA Listview的对齐方式,并提供一些示例代码帮助读者更好地理解和应用。
1. 基本的对齐设置在Listview控件中,我们可以对每个列表项中的子项应用不同的对齐方式,包括左对齐、右对齐和居中对齐。
以下是一些示例代码,可以帮助您理解和实现基本的对齐设置:vba' 设置第一个列表项的第一个子项(列)左对齐ListView1.ListItems(1).ListSubItems(1).TextAlign = lvwAlignLeft' 设置第二个列表项的第一个子项(列)右对齐ListView1.ListItems(2).ListSubItems(1).TextAlign = lvwAlignRight' 设置第三个列表项的第一个子项(列)居中对齐ListView1.ListItems(3).ListSubItems(1).TextAlign = lvwAlignCenter在上面的示例代码中,ListView1是Listview控件的名称,1、2、3分别代表需要设置对齐方式的三个不同的列表项。
lvwAlignLeft、lvwAlignRight和lvwAlignCenter是控制对齐方式的常量,分别表示左对齐、右对齐和居中对齐。
2. 全局对齐设置除了对每个列表项中的子项逐个设置对齐方式外,Listview控件还提供了一种全局的对齐设置。
vba 引用listview
vba 引用listview在VBA(Visual Basic for Applications)中,引用ListView 控件的方法如下:1. 首先,确定ListView 控件的序号。
在Excel 或Access 等应用程序中,可以使用`Controls` 对象来获取ListView 控件的引用。
例如,如果ListView 控件位于工作表的A1 单元格,那么它的引用序号就是1。
2. 使用`Controls` 对象的`Add` 方法创建一个新的ListView 控件。
例如:```vbaSub CreateListView()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets(1)Dim lv As ListViewSet lv = ws.Controls.Add(Type:=23, Left:=100, Top:=100, Width:=200, Height:=100)End Sub```3. 使用`ListView` 对象的属性和方法来操作控件。
以下是一些常用的属性和方法:-`ListView.Items`:包含ListView 中的所有项目。
可以使用索引访问和修改项目。
- `ListView.Item(index)`:根据索引获取项目。
索引从0 开始。
- `ListView.AddItem`:向ListView 添加新项目。
- `ListView.DeleteItem`:删除ListView 中的指定项目。
- `ListView.ClearAll`:清空ListView 中的所有项目。
-`ListView.ColumnHeaders`:包含ListView 列标题的集合。
可以使用索引修改列标题。
以下是一个完整的示例,演示如何在VBA 中创建一个ListView 控件,并向其中添加项目:```vbaSub CreateListViewAndAddItems()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets(1)Dim lv As ListViewSet lv = ws.Controls.Add(Type:=23, Left:=100, Top:=100, Width:=200, Height:=100)Dim item As Variantitem = Array("Item 1", "Item 2", "Item 3")Dim i As LongFor i = 0 To UBound(item) - 1lv.Items.Add item(i), , iNext iEnd Sub```此代码将在工作表1 中创建一个ListView 控件,并向其中添加三个项目。
VB6控件LISTVIEW使用指南
功---- VB6无疑是当前最先进的编程工具之一,无论是它的代码编写还是与视窗98的完美结合, 都令人们特别是程序员们赞叹不已。
在这里,我将自己在编程实践中对LISTVIEW控件的一些使用经验和心得体会与广大的同仁们作以探讨,希望大家批评指正,或者有所借鉴。
---- 在VB6专业版或者企业版中,LISTVIEW控件并不是默认的工具箱的配置项目,你必须要手工添加---单击"工程"菜单项目,选择"部件",在部件对话框的"控件"栏目中选择"MICROSOFT WINDOWS COMMON CONTROLS 6.0",确认在它前面的复选框中有一个黑色的对号,单击"确认" 按钮,这时你的工具箱中便添加了几个控件,其中,有五个空心圆圈的便是LISTVIEW控件了, 当然怎么把它添加到窗体上就不用我多说了吧。
---- 我个人认为,作为一个增强功能的列表框,它的本质是用来显示更多的信息的.因此, 在这篇文章中,我着重介绍它VIEW属性的LVWREPORT(报表)值的使用.至于它的外观怎样设计,诸位当然可以随心所欲了.为了直观一点,我举一个应用实例来说明。
---- 设计完成后的主界面参见图一,它实际上是一个增强功能的文件浏览器。
---- 首先新建一个标准EXE工程,主窗体名称为FRMMAIN,添加一个驱动器列表框DRIVE1,一个文件列表框FILE1(设置VISIBLE属性FALES,PATTERN属性(*.EXE;*.DLL)),一个目录列表框DIR1,一个增强列表框LISTVIEW1,一个IMAGE控件IMAGE1和一个IMAGELIST控件IMALIST1,在IMALIST1控件上单击右键,设计IMAGELIST控件,添加一个你最喜欢的图标(最好使用ICON图标),索引为一。
在主窗体FRMMAIN的通用声明段输入以下代码:Dim clmX As ColumnHeader;标题栏Dim itmX As ListItem;列表项目Dim Counter As Long;计数器Dim Fname As String;读取文件名Dim dname As String;增强列表框完整路径名称Public CurrentDir As String;完整的目录名称在主窗体的LOAD事件中写入以下代码:Private Sub Form_Load()Me.Caption = App.Title;窗体的标题为生成可执行文件的标题Me.Left = (Screen.Width - Me.Width) / 2Me.Top = (Screen.Height - Me.Height) / 2;窗体位置在屏幕中间ListView1.ColumnHeaders.Add ,, "文件名称",ListView1.Width / 3, 0’第一个标题栏是“文件名称“,长度为ListView1 宽度的三分之一,文字左对齐Set clmX = ListView1.ColumnHeaders.Add(,, "序号", ListView1.Width / 5, 2)’第二个标题栏是“序号“ 依次往下Set clmX = ListView1.ColumnHeaders.Add(,, "文件大小 ", ListView1.Width / 4, 1)Set clmX = ListView1.ColumnHeaders.Add(,, "创建时间", ListView1.Width / 3, 0)ListView1.BorderStyle = ccFixedSingle;边界类型ListView1.SmallIcons = ImageList1 ;关联图标仓库ImageList1For Counter = 0 To File1.ListCount - 1 Fname = File1.List(Counter);获取当前目录下符合条件的文件名Set itmX = ListView1.ListItems.Add(,, Fname)’文件名称栏目itmX.SubItems(1) = CStr(Counter + 1) +"/" + CStr(File1.ListCount)’文件在列表框位置itmX.SubItems(2) = CStr(FileLen(Fname));文件长度itmX.SmallIcon = 1;列表项目图标itmX.SubItems(3) = Format(FileDateTime(Fname),"hh:mm yyyy/MMMM/dd");文件创建时间Next CounterListView1.View = lvwReport;报表类型ListView1.Arrange = 0belWrap = FalseDir1.ToolTipText = "当前目录是:" & Dir1.PathEND SUB双击驱动器列表框,输入以下代码:Private Static Sub Drive1_Change()On Error GoTo IFerr;拦截错误Dir1.Path = Drive1.Drive;关联目录列表框Exit SubIFerr:;如果磁盘错误MsgBox ("请确认驱动器是否准备好或者磁盘已经不可用!"),vbOKOnly + vbExclamation;弹出注意对话框Drive1.Drive=Dir1.Path;忽略驱动器改变End Sub双击目录列表框,输入以下代码:Private Static Sub Dir1_Change()File1.Path = Dir1.Path;关联文件列表框If Right(Dir1.Path, 1) < > "\" ThenCurrentDir = Dir1.Path & "\"ElseCurrentDir = Dir1.PathEnd If;设置选定的目录名称ListView1.ListItems.Clear;清除过期的列表项目For Counter = 0 To File1.ListCount - 1Fname = File1.List(Counter)Set itmX = ListView1.ListItems.Add(, , Fname);添加文件名itmX.SubItems(1) = CStr(Counter + 1) + "/"+ CStr(File1.ListCount)itmX.SubItems(2) = CStr(FileLen(CurrentDir & Fname)) itmX.SmallIcon = 1itmX.SubItems(3) = Format(FileDateTime(CurrentDir& Fname), "HH:MM YYYY/MMMM/DD")Next Counter;添加增强列表框的各个项目Dir1.ToolTipText = "当前目录是:" & Dir1.Path;提示End Sub---- 通过以下代码取得鼠标单击增强列表框返回的项目名称:Private Sub ListView1_ItemClick(ByVal Item AsMSComctlLib.ListItem)allfname = Item;文件名dname= CurrentDir& Item;完整的路径和文件名sElectmain = ListView1.SelectedItem.Index;文件序号End Su。
VBA实战系列(ListView控件)
VBA实战系列(ListView控件)VBA项目实战__ListView控件应用ListView控件是一款非常优秀的表格控件,被广泛应用于VBA项目。
VBA使用者熟练地掌握此控件的用法,不仅能大大地增加自己学习VBA的兴趣,而且对实际工作也有很好的帮助。
一、Excel基础数据二、实现效果我们要通过VBA控件list view,实现如下图示效果三、实现过程(一)添加listview控件1.打开VBE编辑器,新建窗体flist2.添加listview控件。
在工具箱中选择listview控件放入窗体。
如工具箱中没有该控件,则应查找注册MSCOMCTL.OCX 文件。
我们可以按照以下方法进行注册:1)将文件解压到“C:\WINDOWS\system32”(WindowsXP);2)单击【开始】|【运行】命令,键入“regsvr32 C:\WINDOWS\system32 \MSCOMCTL.OCX ”(WindowsXP)”进行注册。
(二)添加代码1.添加表头Private Sub UserForm_Initialize()ListView1.ColumnHeaders.Add , , "日期", 64, 0ListView1.ColumnHeaders.Add , , "姓名", 54, 2ListView1.ColumnHeaders.Add , , "性别", 42, 2ListView1.ColumnHeaders.Add , , "年龄", 54, 2ListView1.ColumnHeaders.Add , , "联系方式", 54, 2ListView1.ColumnHeaders.Add , , "电话", 99, 2ListView1.ColumnHeaders.Add , , "诊断", 54, 2ListView1.ColumnHeaders.Add , , "手术名称", 86, 2ListView1.View = lvwReport '显示格式为报表格式ListView1.FullRowSelect = True '允许整行选中ListView1.Gridlines = True '显示网格线' ListView1.Sorted = True '排序End Sub以上代码中ListView1.ColumnHeaders.Add , , "日期", 64, 0中的64代表该表头字段的宽度,0代表居左显示方式。
vba listview控件用法例子
vba listview控件用法例子VBA Listview控件用法示例在VBA编程中,Listview控件是一种非常有用的工具,它可以用于显示和管理大量数据。
Listview控件提供了一种可视化的方式来展示数据,并且可以方便地对数据进行排序、筛选和编辑。
以下是一个简单的示例,演示了如何使用VBA中的Listview控件。
首先,我们需要在VBA中添加Listview控件。
步骤如下:1. 打开VBA编辑器(按下Alt+F11)。
2. 在工具箱中找到"Microsoft Windows Common Controls",如果没有找到,可以右键点击工具箱,选择"其他控件",找到并勾选它。
3. 在VBA编辑器中的工具箱中,单击鼠标右键,选择"附加",然后选择"Microsoft Windows Common Controls X.X(其中X.X表示版本号)"。
4. 在工具箱中找到并单击"Listview"控件,然后在用户窗体上绘制一个Listview 控件。
接下来,我们可以使用以下代码示例来演示Listview控件的用法:```vbaPrivate Sub UserForm_Initialize()Dim i As Integer' 设置Listview控件的列标题With ListView1.View = lvwReport.ColumnHeaders.Add , , "姓名".ColumnHeaders.Add , , "年龄".ColumnHeaders.Add , , "性别"End With' 向Listview控件中添加数据With ListView1.ListItemsFor i = 1 To 10' 添加行Set itm = .Add(, , "姓名" & i)' 添加子项itm.SubItems(1) = "年龄" & iitm.SubItems(2) = "性别" & iNext iEnd WithEnd Sub```以上代码首先在用户窗体初始化事件中设置了Listview控件的列标题。
vb.net listview例子
中ListView控件使用详解及案例在中,ListView控件是一个非常强大的控件,它允许用户在Windows窗体应用程序中显示列表数据。
通过使用ListView控件,您可以轻松地展示、编辑和操作数据,并且可以根据需要自定义其外观和行为。
下面将详细介绍ListView控件的使用方法和案例。
一、添加ListView控件首先,您需要在Windows窗体中添加ListView控件。
可以通过拖拽ListView控件从工具箱将其添加到窗体上。
二、设置ListView属性在添加完ListView控件后,您需要设置其属性以定义其外观和行为。
以下是一些常用的属性:1.View:设置ListView的显示方式,可以选择大图标、小图标、列表或详细列表等。
2.FullRowSelect:设置是否选择整行。
3.Sorted:设置是否对ListView进行排序。
belEdit:设置是否允许编辑ListView中的标签。
rgeImageList:设置大图标的图像列表。
6.SmallImageList:设置小图标的图像列表。
7.SelectionMode:设置选择模式,可以选择单选或多选。
三、添加项目在设置完属性后,您需要向ListView中添加项目。
可以通过以下几种方式添加项目:1.手动添加:使用代码逐个添加项目。
例如:ListView1.Items.Add("Item1")。
2.绑定数据源:将数据源绑定到ListView,数据源可以是数组、集合或数据表等。
例如:ListView1.DataSource = dataTable。
3.拖放文件:将文件拖放到ListView中,可以自动创建项目并显示文件名。
四、案例:显示目录中的文件列表下面是一个简单的案例,演示如何使用ListView控件显示目录中的文件列表:1.创建一个Windows窗体应用程序。
2.在窗体上添加一个ListView控件。
3.设置ListView的属性,例如View设置为LargeIcon,SelectionMode设置为Single。
VB ListView的使用
VB ListView的使用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对象是指控件中的一行(不包含标头行)的所有内容。
excel vba listview用法
excel vba listview用法Excel VBA Listview用法:Excel VBA中的Listview是一种常用的控件,它可以方便地在用户界面中显示和管理大量的数据。
以下是一些关于Excel VBA Listview的常见用法:1. 创建Listview:您可以通过在VBA中使用 "UserForm" 控件来创建Listview控件。
在UserForm设计器中,选择"工具箱",然后选择"Listview"控件,拖动它到UserForm 上。
2. 添加列:使用Listview.Columns.Add方法可以添加列。
您可以指定列的标题、宽度和对齐方式。
3. 添加行:使用Listview.ListItems.Add方法可以添加行。
每一行代表一个列表中的项,您可以指定每个项的值和图标。
4. 设置显示样式:使用Listview.View属性可以设置Listview的显示样式。
常见的样式有"大图标"、"小图标"、"列表"、"详细信息"等。
5. 单击事件:使用Listview的Click事件可以捕获用户单击列表项的动作。
在该事件中,您可以执行相应的操作,如打开某个文件、显示详细信息等。
6. 排序功能:使用Listview.Sort方法可以按列对列表项进行排序。
您可以选择升序或降序排列。
7. 编辑功能:使用Listview的LabelEdit属性可以启用列表项的编辑功能。
用户可以直接在Listview中编辑列表项的值。
8. 删除行:使用Listview.ListItems.Remove方法可以删除列表中的某一行。
请注意,以上只是Excel VBA Listview的一些常见用法,您还可以结合其他VBA代码和功能去进一步定制和扩展Listview的功能。
希望本文对您有所帮助!。
VBAListView控件使用实例
VBAListView控件使⽤实例功能:ListView控件实现连接数据库实现显⽰查询数据空能。
图⽚:代码:Private Sub CommandButton1_Click()Dim res As Stringres = TextBox1.TextCall UserFormabc(res)End Sub'ItemClick:Trigger an event when a row or ListItem is selected. To get ListItem Object which is selected.Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)Dim intX As Integer'Difine a variable as integerintX = ListView1.SelectedItem.IndexTextBox1.Text = ListView1.ListItems(intX).TextEnd SubPrivate Sub UserFormabc(Optional ByVal res As String = "")With ListView1 'To initialize listview.ColumnHeaders.Add , , "Project No.", 120, lvwColumnLeft.ColumnHeaders.Add , , "Project Name", 120, lvwColumnCenter.ColumnHeaders.Add , , "Department", 120, lvwColumnCenter.ColumnHeaders.Add , , "Date", 120, lvwColumnCenter.View = lvwReport 'The report format.LabelEdit = lvwManual 'Do not edit.Gridlines = True.FullRowSelect = TrueEnd WithDim cnn As StringDim rs As RecordsetDim sql As Stringcnn = "Provider=Microsoft.ACE.OLEDB.16.0;" & _"Data Source=D:\2\VBA\A3\database\A3db2019.accdb"If res = ""Thensql = "select A3_Project.*, A3_Dept.* from A3_Project left join A3_Dept on A3_Project.ProjectID=A3_Dept.ProjectID"Elsesql = "select A3_Project.*, A3_Dept.* from A3_Project left join A3_Dept on A3_Project.ProjectID=A3_Dept.ProjectID where A3_Project.ProjectID='" & res & "'"End IfSet rs = New Recordsetrs.Open sql, cnn, 1, 1ListView1.ListItems.ClearFor i = 1To rs.RecordCountWith ListView1.ListItems.Add() 'Add records.Text = rs.Fields("A3_Project.ProjectID") 'Add the first column .SubItems(1) = rs.Fields("ProjectName") 'Add the second column .SubItems(2) = rs.Fields("Department").SubItems(3) = rs.Fields("Date")rs.MoveNextEnd WithNextrs.CloseEnd SubPrivate Sub UserForm_initialize()Call CommandButton1_ClickEnd Sub。
vb listview控件的基本用法
vb listview控件的基本用法VB Listview控件的基本用法[Listview控件的介绍]VB Listview控件是一种在Windows应用程序中常用的控件,它可以显示和编辑一个或多个带有多列的项。
每个项都可以有图标、文本和子项,可以根据需要自定义样式和布局。
Listview控件可以用于显示文件列表、数据库结果集、目录树等等,是开发Windows界面的常用工具之一。
[Listview控件的常见属性]1. Columns属性:列集合,用于定义和管理控件的列。
可以通过Add方法添加新的列,通过Remove方法删除现有的列。
2. Items属性:项集合,用于定义显示在控件中的项。
可以通过Add方法添加新的项,通过Remove方法删除现有的项。
3. SubItems属性:子项集合,用于定义项的子项。
每个项可以有多个子项,每个子项占用一个列的空间。
4. View属性:视图模式,用于定义控件的布局风格。
常见的视图模式有大图标、小图标、列表、详细信息等。
5. FullRowSelect属性:是否在选中项时同时选中整行。
如果设置为True,则选中项时会同时选中所在行的其他列。
6. GridLines属性:是否显示网格线。
如果设置为True,则控件会在列和行之间显示灰色的网格线。
[Listview控件的常见事件]1. ColumnClick事件:当用户单击列标题时触发,可以用于对项进行排序。
2. ItemActivate事件:当用户双击项时触发,可以用于执行双击项的操作。
3. ItemChecked事件:当用户勾选或取消勾选项时触发,可以用于处理选中项的更改。
4. ItemDrag事件:当用户拖动项时触发,可以用于处理拖动项的操作。
5. ItemSelectionChanged事件:当选中项发生更改时触发,可以用于处理选中项的变化。
[Listview控件的基本使用步骤]步骤1:在VB窗体上添加一个Listview控件。
vba listview的用法
在VBA(Visual Basic for Applications)中,ListView控件通常用于显示和操作数据列表。
以下是一些基本的使用方法:1、添加ListView控件:在VBA中,你可以通过设计视图将ListView控件添加到表单或用户窗体中。
2、设置属性:设置ListView控件的属性,如列标题、列宽、背景色等。
3、添加数据:使用AddItem方法向ListView中添加数据。
例如:vbaListView1.AddItem "Item 1"ListView1.AddItem "Item 2"4、设置子项:对于每个主项,你可以设置一个或多个子项。
例如:vba复制代码ListView1.ListItems(0).SubItems(0) = "SubItem 1"ListView1.ListItems(0).SubItems(1) = "SubItem 2"5、处理事件:你可以为ListView控件添加事件处理程序,如单击事件、双击事件等。
6、使用DetailView:你可以使用DetailView属性来设置ListView的显示方式。
默认是ReportView,可以更改为IconView或SmallIconView。
7、排序和筛选:使用Sort方法对ListView中的数据进行排序,使用Filter方法进行筛选。
8、自定义列:你可以自定义列标题,并设置每个列的数据类型和宽度。
9、删除项目:使用RemoveItem方法删除ListView中的特定项目。
例如:vbaListView1.RemoveItem 010、更新数据源:如果ListView控件绑定到一个数据源,你可以使用UpdateData方法来更新数据源。
11、获取选中项:你可以使用SelectedItem或SelectedIndices属性来获取选中的项目或索引。
vblistview控件用法
vblistview控件⽤法VB ListView控件适⽤⽅法ListView控件在⼯具箱上击⿏标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Common Controls 5.0控件(Comctl32.ocx),这个控件中包括ListView、TreeView等⼏个Windows 95特有的控件。
如果使⽤的是Visual Basic 6.0,则应该选择Microsoft Windows Common Controls 6.0控件。
将ColumnHeader 对象添加到ListView 控件的ColumnHeaders 集合中。
语法ListView1.ColumnHeaders.Add(index, key, text, width, alignment, icon)Add ⽅法的语法包含下⾯部分:部分描述object 必需的。
对象表达式,其值是ColumnHeaders 集合。
index 可选的。
唯⼀标识对象集合成员的整数。
key 可选的。
唯⼀的字符串表达式,可以⽤来访问集合的成员。
text 可选的。
出现在ColumnHeader 对象中的字符串。
width 可选的。
数值表达式,它使⽤控件容器的度量单位指定对象的宽度。
alignment 可选的。
决定ColumnHeader 对象中⽂本对齐⽅式的整数。
关于设置信息,请参阅“请参阅列表中Alignment 属性的信息。
icon 可选的。
Smallicons 图象列表中图象的关键字或索引。
说明Add ⽅法返回新插⼊的ColumnHeader 对象的引⽤。
使⽤index 参数在ColumnHeaders 集合的特定位置插⼊列标头。
当ColumnHeaders 集合成员可能动态变更时,应使⽤Key 属性引⽤它们,因为任何ColumnHeader 对象的Index 属性都可以改变。
⽰例:ListView1.ListItems.Clear '清空列表ListView1.ColumnHeaders.Clear '清空列表头ListView1.View = lvwReport '设置列表显⽰⽅式ListView1.GridLines = True '显⽰⽹络线ListView1.FullRowSelect = True '选择整⾏ListView1.ColumnHeaders.Add , , "ID", 500 '给列表中添加列名ListView1.ColumnHeaders.Add , , "本地IP", 1500ListView1.ColumnHeaders.Add , , "本地端⼝", 900ListView1.ColumnHeaders.Add , , "协议", 550ListView1.ColumnHeaders.Add , , "远程IP", 1500ListView1.ColumnHeaders.Add , , "远程端⼝", 900ListView1.ColumnHeaders.Add , , "当前状态", 900ListView1.ColumnHeaders.Add , , "连接时间", 900-------------------------------------------------------Dim XX = ListView1.ListItems.Count + 1ListView1.ListItems.Add , , XListView1.ListItems(X).SubItems(1) = "00:00:00"ListView1.ListItems(X).SubItems(2) = "2008-01-01"ListView1.ListItems(X).SubItems(3) = "(⽆)"-------------------------------------------------------ListView1.ListItems.Clear '清空列表ListView1.ListItems.Add , , "1"ListView1.ListItems(1).SubItems(1) = "00:00:00"ListView1.ListItems(1).SubItems(2) = "2008-01-01"ListView1.ListItems(1).SubItems(3) = "(⽆)"ListView1.ListItems.Add , , "2"ListView1.ListItems(2).SubItems(1) = "00:00:01"ListView1.ListItems(2).SubItems(2) = "2008-01-01"ListView1.ListItems(2).SubItems(3) = "(⽆)"-------------------------------------------------------ListView1.View = lvwReport '设置显⽰⽅式为列表ListView1.AllowColumnReorder = True '对⾏进⾏程序排列,⽤⿏标进⾏排列ListView1.Arrange = lvwAutoLeft '图标横排列ListView1.Arrange = lvwAutoTop '图标竖排列ListView1.FlatScrollBar = False '显⽰滚动条ListView1.FlatScrollBar = True '隐藏滚动条ListView1.FullRowSelect = True '选择整⾏ListView1.GridLines = True '显⽰⽹络线/doc/e84a7b12866fb84ae45c8d40.html belWrap = True '图标可以换⾏ListView1.MultiSelect = True '可以选择多个项⽬ListView1.PictureAlignment = lvwTopLeft '图⽚对齐⽅式是左顶部,其他有右顶部(1)、左底部(2)、右底部(3)、居中(4)、平铺(5)ListView1.Checkboxes = True '显⽰复选框ListView1.DropHighlight = ListView1: ListItems.Item (2) '显⽰系统颜⾊获取当前⾏数和列数:MsgBox "⾏数:" & ListView1.ListItems.Count & "列数:" & ListView1.ColumnHeaders.CountPrivate Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) ListView1.ToolTipText = "⾏数:" & ListView1.ListItems.Count & "列数:" &ListView1.ColumnHeaders.CountEnd Sub设置宽度:ListView1.ColumnHeaders.Add , , "备注" ,1500当前选中⾏:msgbox ListView1.SelectedItem.index获取复选框的值:msgbox ListView1.ListItems(1).Checked删除指定⾏:ListView1.ListItems.Remove 1去掉⿏标左键点击标签编辑:labeledit属性改为1读取某⾏第⼀列内容:ListView1.ListItems(i).Text读取某⾏第⼏列内容(不包括第⼀列):ListView1.ListItems(Num).SubItems(4)读取当前选中⾏第⼀列内容:ListView1.ListItems(ListView1.SelectedItem.Index).Text循环查找读取项⽬:Dim i As IntegerFor i = 1 To ListView1.ListItems.CountIf ListView1.ListItems(i).Text = 4 Then MsgBox ListView1.ListItems(i).Text '第⼀列If ListView1.ListItems(i).SubItems(1) = 4 Then MsgBox ListView1.ListItems(i).SubItems(1) '第⼆列Next i清空列表头:ListView1.ColumnHeaders.Clear清空列表:ListView1.ListItems.Clear右键菜单:Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = vbRightButton Then PopupMenu CommandLst '按下⿏标右键显⽰菜单End Sub当前选中判断:Dim NIf ListView1.ListItems.Count <> 0 Then N = ListView1.SelectedItem.Index Else MsgBox "当前没有任何主机在线!", vbInformation, "警告:": Exit SubIf N < 1 Then MsgBox "你没有选中任何主机!", vbInformation, "警告:": Exit SubVB设置某⾏为选中/⾮选中状态:ListView.ListItems(i).Selected = True '选中第i⾏ListView.ListItems(i).Selected = False '选中第i⾏⼀、View 属性ListView 控件作为⼀个可以显⽰图标或者⼦项的列表控件,它最重要的属性就是View属性,该属性决定了以哪种视图模式显⽰控件的项,这四种视图模式分别如下:[art_myurl]1、LartIcon:⼤图标视图模式,在项的⽂本旁显⽰⼤的图标,在控件宽度⾜够的情况下,项是如图⼀中的盘符⼀样优先以平⾏排列的,排列不完的则⾃动换⾏显⽰在新⾏中。
VB6之ListView控件实现单选、多选、更新选定列内容(图例,源码,注释)
VB6之ListView控件实现单选、多选、更新选定列内容数据库编程中经常用到ListView控件实现选择后更新选定列内容的操作,通过该文档,读者可以更好的理解ListView控件的常用属性及方法。
从而使数据库操作更加友好,直观。
很多读者在使用该控件的时候都会遇到第一列填充不了内容的情况。
该情况是因为ListView控件的第一列(图中红色方框所示)和后面的列(图中蓝色方框所示)表示方法不一样。
红色方框部分用ListView1.ListItems.Add方法表示并添加。
蓝色方框部分用itmX.SubItems(i)方法表示并添加。
起始索引为1 。
本文将详细讲述ListView1实现上图所示功能。
本文的数据库链接已经定义在标准模块中。
具体代码如下:Public Function cnn() As ADODB.ConnectionSet cnn = New ADODB.Connectioncnn.Open"Provider=SQLOLEDB.1;Password=ldg730108;Persist SecurityInfo=True;User ID=ldg;Initial Catalog=ldg;DataSource=172.30.76.249"End Function一、将数据库内容添加到ListView1控件中请注意设置ListView1的view、Checkboxs属性。
Form_Load具体代码如下:Private Sub Form_Load()'设置ListView1的样式为报表样式ListView1.View = lvwReport'设置ListView1可以复选ListView1.Checkboxes = True'声明一个记录集Dim rs As ADODB.Recordset'设置一个新的记录集Set rs = New ADODB.Recordset'打开表winkrs.Open "select * from wink", cnn, adOpenKeyset, adLockOptimistic'设置ListView1的列标题Dim clmX As ColumnHeaderSet clmX = ListView1.ColumnHeaders.Add(, , "Id", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Name", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Sex", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Age", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Address", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Birth", ListView1.Width / 6)'将数据库内容添加到ListView1中Dim itmX As ListItemWhile Not rs.EOFSet itmX = ListView1.ListItems.Add(, ,rs.Fields("id"))If Not IsNull(rs!Name) ThenitmX.SubItems(1) = rs.Fields("name")End IfIf Not IsNull(rs!sex) ThenitmX.SubItems(2) = rs.Fields("sex")End IfIf Not IsNull(rs!age) ThenitmX.SubItems(3) = rs.Fields("age")End IfIf Not IsNull(rs!address) ThenitmX.SubItems(4) = rs.Fields("address")End IfIf Not IsNull(rs!birth) ThenitmX.SubItems(5) = rs.Fields("birth")End If'移动到下一条记录。
vba-listview控件操作
vba-listview控件操作Private Sub UserForm_Initialize()Dim iDim itm As ListItemDim liMe.ListView1.ColumnHeaders.Add 1, "Q", "QQ号", Me.ListView1.Width / 3 '添加第⼀列Me.ListView1.ColumnHeaders.Add 2, "N", "昵称", Me.ListView1.Width / 3, lvwColumnCenter '添加第⼆列Me.ListView1.ColumnHeaders.Add 2, "D", "地区", Me.ListView1.Width / 3, lvwColumnRight '添加第⼆列Me.ListView1.View = lvwReport '显⽰外观Me.ListView1.Gridlines = True '是否有表格线'For i = 2 To [A65535].End(xlUp).Row '使⽤集合的⽅法添加' Set itm = Me.ListView1.ListItems.Add(Text:=Cells(i, 1))' Set li = itm.ListSubItems.Add(Text:=Cells(i, 2)) '集合添加,就是添加新的⼀列' Set li = itm.ListSubItems.Add(Text:=Cells(i, 3)) '添加在上⼀句的后⾯''NextFor i = 2 To [A65535].End(xlUp).Row '使⽤数组的⽅法添加Set itm = Me.ListView1.ListItems.Add() '先添加⼀个⾏对象,是除开标题(colunmheaders)⾏的⾏对象itm.Text = Cells(i, 1) '⾏对象的第⼀列itm.SubItems(1) = Cells(i, 2) '⾏对像的第⼆列itm.SubItems(2) = Cells(i, 3) '⾏对像的第三列Next'subitems是⼀个string 数组'ListSubItems 是⼀个集合'me.ListView1.ColumnHeaders.Remove "D" 删除key 是D的列,即此处的地区列End Sub'Me.ListView1.View = lvwIcon '普通视图'Me.ListView1.View = lvwList '列表视图,上下排列,⽆表格线'Me.ListView1.View = lvwSmallIcon '⼩图标视图'Me.ListView1.View = lvwReport '报表视图,有标题,可⼼显⽰表格线Me.ListView1.ListItems.Clear '清除所有列'筛选功能其实就是写个判断,等于筛选框的值,再添加值即可'从listview中输⼊数据到表格中时,按列⽅向循环For i = 1 To Me.ListView1.ColumnHeaders.Count '取列标题个数开始循环,先取第⼀列的标题,,再是第⼆列,第三列 Cells(1, i) = Me.ListView1.ColumnHeaders(i)For j = 1 To Me.ListView1.ListItems.Count '⾏的循环If i = 1 ThenCells(j + 1, i) = Me.ListView1.ListItems(j).TextElseCells(j + 1, i) = Me.ListView1.ListItems(j).SubItems(i - 1)End IfNextNext'选取的⾏输⼊到⼯作表中Me.ListView1.SelectedItem '表⽰正在选择的⾏Me.ListView1.SelectedItem.Text '第⼀列的值Me.ListView1.SelectedItem.SubItems (1) '第⼆列的值Me.ListView1.SelectedItem.SubItems (2) '第三列的值'添加红⾊字体⾏直接⽤增加新的⾏Set xxx = Me.ListView1.ListItems.Add()xxx.SubItems(2) = 123xxx.SubItems(3) = 234xxx.ForeColor = RGB(255, 0, 0) '列表颜⾊。
vblistview控件用法
VB ListView控件适用方法ListView控件在工具箱上击鼠标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Common Controls 5.0控件(Comctl32.ocx),这个控件中包括ListView、TreeView等几个Windows 95特有的控件。
如果使用的是Visual Basic 6.0,则应该选择Microsoft Windows Common Controls 6.0控件。
将ColumnHeader 对象添加到ListView 控件的ColumnHeaders 集合中。
语法ListView1.ColumnHeaders.Add(index, key, text, width, alignment, icon)Add 方法的语法包含下面部分:部分描述object 必需的。
对象表达式,其值是ColumnHeaders 集合。
index 可选的。
唯一标识对象集合成员的整数。
key 可选的。
唯一的字符串表达式,可以用来访问集合的成员。
text 可选的。
出现在ColumnHeader 对象中的字符串。
width 可选的。
数值表达式,它使用控件容器的度量单位指定对象的宽度。
alignment 可选的。
决定ColumnHeader 对象中文本对齐方式的整数。
关于设置信息,请参阅“请参阅列表中Alignment 属性的信息。
icon 可选的。
Smallicons 图象列表中图象的关键字或索引。
说明Add 方法返回新插入的ColumnHeader 对象的引用。
使用index 参数在ColumnHeaders 集合的特定位置插入列标头。
当ColumnHeaders 集合成员可能动态变更时,应使用Key 属性引用它们,因为任何ColumnHeader 对象的Index 属性都可以改变。
示例:ListView1.ListItems.Clear '清空列表ListView1.ColumnHeaders.Clear '清空列表头ListView1.View = lvwReport '设置列表显示方式ListView1.GridLines = True '显示网络线ListView1.FullRowSelect = True '选择整行ListView1.ColumnHeaders.Add , , "ID", 500 '给列表中添加列名ListView1.ColumnHeaders.Add , , "本地IP", 1500ListView1.ColumnHeaders.Add , , "本地端口", 900ListView1.ColumnHeaders.Add , , "协议", 550ListView1.ColumnHeaders.Add , , "远程IP", 1500ListView1.ColumnHeaders.Add , , "远程端口", 900ListView1.ColumnHeaders.Add , , "当前状态", 900ListView1.ColumnHeaders.Add , , "连接时间", 900-------------------------------------------------------Dim XX = ListView1.ListItems.Count + 1ListView1.ListItems.Add , , XListView1.ListItems(X).SubItems(1) = "00:00:00"ListView1.ListItems(X).SubItems(2) = "2008-01-01"ListView1.ListItems(X).SubItems(3) = "(无)"-------------------------------------------------------ListView1.ListItems.Clear '清空列表ListView1.ListItems.Add , , "1"ListView1.ListItems(1).SubItems(1) = "00:00:00"ListView1.ListItems(1).SubItems(2) = "2008-01-01"ListView1.ListItems(1).SubItems(3) = "(无)"ListView1.ListItems.Add , , "2"ListView1.ListItems(2).SubItems(1) = "00:00:01"ListView1.ListItems(2).SubItems(2) = "2008-01-01"ListView1.ListItems(2).SubItems(3) = "(无)"-------------------------------------------------------ListView1.View = lvwReport '设置显示方式为列表ListView1.AllowColumnReorder = True '对行进行程序排列,用鼠标进行排列ListView1.Arrange = lvwAutoLeft '图标横排列ListView1.Arrange = lvwAutoTop '图标竖排列ListView1.FlatScrollBar = False '显示滚动条ListView1.FlatScrollBar = True '隐藏滚动条ListView1.FullRowSelect = True '选择整行ListView1.GridLines = True '显示网络线belWrap = True '图标可以换行ListView1.MultiSelect = True '可以选择多个项目ListView1.PictureAlignment = lvwTopLeft '图片对齐方式是左顶部,其他有右顶部(1)、左底部(2)、右底部(3)、居中(4)、平铺(5)ListView1.Checkboxes = True '显示复选框ListView1.DropHighlight = ListView1: ListItems.Item (2) '显示系统颜色获取当前行数和列数:MsgBox "行数:" & ListView1.ListItems.Count & "列数:" & ListView1.ColumnHeaders.CountPrivate Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) ListView1.ToolTipText = "行数:" & ListView1.ListItems.Count & "列数:" &ListView1.ColumnHeaders.CountEnd Sub设置宽度:ListView1.ColumnHeaders.Add , , "备注" ,1500当前选中行:msgbox ListView1.SelectedItem.index获取复选框的值:msgbox ListView1.ListItems(1).Checked删除指定行:ListView1.ListItems.Remove 1去掉鼠标左键点击标签编辑:labeledit属性改为1读取某行第一列内容:ListView1.ListItems(i).Text读取某行第几列内容(不包括第一列):ListView1.ListItems(Num).SubItems(4)读取当前选中行第一列内容:ListView1.ListItems(ListView1.SelectedItem.Index).Text循环查找读取项目:Dim i As IntegerFor i = 1 To ListView1.ListItems.CountIf ListView1.ListItems(i).Text = 4 Then MsgBox ListView1.ListItems(i).Text '第一列If ListView1.ListItems(i).SubItems(1) = 4 Then MsgBox ListView1.ListItems(i).SubItems(1) '第二列Next i清空列表头:ListView1.ColumnHeaders.Clear清空列表:ListView1.ListItems.Clear右键菜单:Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = vbRightButton Then PopupMenu CommandLst '按下鼠标右键显示菜单End Sub当前选中判断:Dim NIf ListView1.ListItems.Count <> 0 Then N = ListView1.SelectedItem.Index Else MsgBox "当前没有任何主机在线!", vbInformation, "警告:": Exit SubIf N < 1 Then MsgBox "你没有选中任何主机!", vbInformation, "警告:": Exit SubVB设置某行为选中/非选中状态:ListView.ListItems(i).Selected = True '选中第i行ListView.ListItems(i).Selected = False '选中第i行一、View 属性ListView 控件作为一个可以显示图标或者子项的列表控件,它最重要的属性就是View属性,该属性决定了以哪种视图模式显示控件的项,这四种视图模式分别如下:[art_myurl]1、LartIcon:大图标视图模式,在项的文本旁显示大的图标,在控件宽度足够的情况下,项是如图一中的盘符一样优先以平行排列的,排列不完的则自动换行显示在新行中。
vb中listview的使用案例
Dim cn As ADODB.ConnectionDim rs As ADODB.Recordset'定义一个连接对象和一个查询返回结果集Set cn = New ADODB.ConnectionSet rs = New ADODB.Recordset'创建两个对象cn.ConnectionString = "driver=SQL Server;server=IAN-PC;uid=sa;pwd=kingdee;database=CRM" cn.OpenDim sql As Stringsql = "select * from ian_1"rs.Open sql, cnListView1.View = lvwReportListView1.ColumnHeaders.Add , , "选择", 1000ListView1.ColumnHeaders.Add , , rs(0).Name, 1000ListView1.ColumnHeaders.Add , , rs(1).Name, 1000ListView1.ColumnHeaders.Add , , rs(2).Name, 1000ListView1.ColumnHeaders.Add , , rs(3).Name, 1000ListView1.ColumnHeaders.Add , , rs(4).Name, 1000'表头名称ListView1.GridLines = True '显示网格ListView1.Checkboxes = True '显示复选框'ListView1.FullRowSelect = True 整行记录全选上Dim a As Integera = rs.RecordCount + 1'MsgBox aDim x As Integerx = 1'取得rs的记录集While Not rs.EOF And Not rs.BOF '如果记录集没有读完继续读ListView1.ListItems.Add , , x '第一行选择复选框ListView1.ListItems(x).SubItems(1) = rs(0).ValueListView1.ListItems(x).SubItems(2) = rs(1).ValueListView1.ListItems(x).SubItems(3) = rs(2).ValueListView1.ListItems(x).SubItems(4) = rs(3).ValueListView1.ListItems(x).SubItems(5) = rs(4).Valuex = x + 1rs.MoveNext '下一行WendMsgBox "dd"。
VBA窗体之ListView基本应用
VBA窗体之ListView基本应用除非注明,文章均为战战如疯原创,转载请保留链接: cat4/298.html,VBA交流群273624828。
昨天在我们在VBA窗体之ListView基本应用中讲到了怎样设置ListView控件的表头和输入数据的两种方法,今天我们继续来看怎样将选中的数据输出和改变字体颜色。
我们先来看单行数据的输出Private Sub CommandButton2_Click()Dim iFor i = 1 ToListView1.ColumnHeaders.CountCells(7, i) =ListView1.ColumnHeaders(i) '输出表头If i = 1 ThenCells(8, i) =ListView1.SelectedItem.Text '第一列ElseCells(8, i) =ListView1.SelectedItem.SubItems(i - 1) '其他列End IfNextEnd Sub为了说明问题上面的代码我加了一个怎样输出表头的代码,平时用的话很少输出表头,SelectedItem表示被选中的那一行,自然第一列和其他列的表示方法还是分开的,不再多说了。
上面的代码是只选中一行的情况,那如果我选中了多行都需要输出怎么办,或者我要把整个ListView表格都输出怎么办?其实只要加一个判断该行是否选中的代码就可以了,选中的就输出,没选中的就不输出,输出全部的话连判断代码都免了。
直接看循环判断部分代码' For i = 1 To ListView1.ListItems.Count' If ListView1.ListItems(i).SelectedThen' MsgBox i & '行已经选中'' End If' Next上面的代码判断出哪行被选中,再对ListView.ListItems(i)进行操作即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB ListView的使用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 SubPrivate Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader) Select Case ColumnHeader.KeyCase "Sex":ListView1.SortKey=1ListView1.SortOrder=lvwAscendingListView1.Sorted=TrueCase "Age":ListView1.SortKey=2ListView1.SortOrder=lvwAscendingListView1.Sorted=TrueEnd SelectEnd Sub一、ListView使用简介ListView控件是VB开发者非常喜爱的控件之一。
作为Windows95公共控件组(COMCTL32.OCX)的成员,它经常与经常与TreeView、ImageList等控件联合使用。
即用TreeView显示一个的树型结构,而用ListView显示选中的节点(Node)对象的记录集。
这是笔者在开发财务软件项目中的<<凭证管理>> 模块的一个用户界面。
屏幕左边是一个TreeView控件,用来显示会计凭证的类别;右边是一个ListView,用来显示对应类别的凭证目录;上方是一个菜单条控件(MenuBar)和一个工具条控件(ToolBar);下方是一个状态栏控件(StatusBar),用来显示凭证数个当前日期。
大家可以看到图中所示的界面非常类似于Window95/98 的资源浏览器,Windows的界面风格做为一种标准已为广大用户所接受。
而Windows操作系统的主要的优点就是为所有的应用程序提供了公用的界面。
知道如何使用基于Windows的应用程序的用户,很容易学会使用其他应用程序。
这种使用Windows95公共控件组合的方法能够达到与Windows界面的一致性,所以在目前VB5.0应用程序的开发中经常使用。
二、填充大量结果集所遇到的问题在实际应用开发中,经常用ListView填充一个数据库结果集(Record set)的内容。
即先写一段SQL查询语句,产生一个结果集,然后将结果集的每一条记录用DO...LOOP循环语句中填到ListView中。
但是当结果集很大时(例如有5000条以上的记录) ,填充所需要的时间会很长。
用户不得不等很长时间完成一个查询。
所以在查询的过程中必须允许用户按Escape键退出。
具体做法是在DO...LOOP循环体中加一条DoEvents函数,并写一段中断退出程序代码。
DoEvents函数的功能是:转让控制权,以便让操作系统处理其它的事件。
这样在长时间的查询过程中,如果用户按了Escape键,将退出循环体,结束查询过程。
但是这样又会引发另外一个问题:由于DoEvents 可以让操作系统响应别的事件,循环体中填充每一条ListView项目(ListItem)的过程也会显示出来,所以在填充的过程中屏幕会不停的闪动,这种现象当然不能被用户所接受。
如何解决这个问题呢?三、解决方案用WindowsAPI函数可以解决这个问题。
首先对几个用到的API函数做一解释和说明。
1.GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long此函数的功能是获得一个指定对象窗口(Window) 的矩型框区域(rectangle)。
Hwnd为指定对象或窗体的句柄。
LpRect为返回矩型框的结构(必须定义为结构类型的变量)。
2.ValidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long此函数的功能是使指定的矩型区域生效。