VB6之ListView控件实现单选、多选、更新选定列内容(图例,源码,注释)

更新时间:2023-12-16 08:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VB6之ListView控件实现单选、多选、更新选定列内容

数据库编程中经常用到ListView控件实现选择后更新选定列内容的操作,通过该文档,读者可以更好的理解ListView控件的常用属性及方法。从而使数据库操作更加友好,直观。

很多读者在使用该控件的时候都会遇到第一列填充不了内容的情况。该情况是因为ListView控件的第一列(图中红色方框所示)和后面的列(图中蓝色方框所示)表示方法不一样。

红色方框部分用ListView1.ListItems.Add方法表示并添加。 蓝色方框部分用itmX.SubItems(i)方法表示并添加。起始索引为1 。

本文将详细讲述ListView1实现上图所示功能。

本文的数据库链接已经定义在标准模块中。具体代码如下:

Public Function cnn() As ADODB.Connection Set cnn = New ADODB.Connection

cnn.Open \Info=True;User ID=ldg;Initial Catalog=ldg;Data Source=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 '打开表wink

rs.Open \

'设置ListView1的列标题 Dim clmX As ColumnHeader

Set clmX = ListView1.ColumnHeaders.Add(, , \ Set clmX = ListView1.ColumnHeaders.Add(, , \ Set clmX = ListView1.ColumnHeaders.Add(, , \ Set clmX = ListView1.ColumnHeaders.Add(, , \

Set clmX = ListView1.ColumnHeaders.Add(, , \ Set clmX = ListView1.ColumnHeaders.Add(, , \

'将数据库内容添加到ListView1中 Dim itmX As ListItem While Not rs.EOF

Set itmX = ListView1.ListItems.Add(, , rs.Fields(\

If Not IsNull(rs!Name) Then

itmX.SubItems(1) = rs.Fields(\ End If

If Not IsNull(rs!sex) Then

itmX.SubItems(2) = rs.Fields(\ End If

If Not IsNull(rs!age) Then

itmX.SubItems(3) = rs.Fields(\ End If

If Not IsNull(rs!address) Then

itmX.SubItems(4) = rs.Fields(\ End If

If Not IsNull(rs!birth) Then

itmX.SubItems(5) = rs.Fields(\ End If

'移动到下一条记录。 rs.MoveNext Wend End Sub

二、实现单选功能

将选定的单元格内容输出到Text1控件中。请读者注意第一列表示方法为ListView1.ListItems(i).SubItems(1)。

Private Sub Command1_Click() '单选

For i = 1 To ListView1.ListItems.Count

'如果复选框打“√”则把打对号行的第一列内容显示在文本框中。 If ListView1.ListItems(i).Checked = True Then Text1.Text = ListView1.ListItems(i).SubItems(1) End If Next End Sub

三、实现全选功能

通过循环将所有ListView1.ListItems(i).Checked属性设置为true。

Private Sub Command2_Click() '循环至ListView1的总记录数

For i = 1 To ListView1.ListItems.Count '全选

ListView1.ListItems(i).Checked = True Next End Sub

四、实现全不选功能

通过循环将所有ListView1.ListItems(i).Checked属性设置为false。

Private Sub Command3_Click() '循环至ListView1的总记录数

For i = 1 To ListView1.ListItems.Count '全不选

ListView1.ListItems(i).Checked = False Next End Sub

五、实现更新选定列功能 重头戏来了。

通过循环将已经选择的内容放置在数组中。VB6中无可变数组,只好定义了一个100个元素的数组。读者可以根据自己的实际情况进行定义。但不要定义过大以减少系统资源消耗。

通过循环将选定的行的指定列进行更新数据库操作。该实例是将选定列的性别进行更新。读者可以根据自己的实际情况更新一列或若干列内容。

Private Sub Command4_Click() '多选

'定义一个100个元素的一维数组 Dim tmpArry(100) As String '循环获得第i行,第一列的内容 Dim j As Integer j = -1

For i = 1 To ListView1.ListItems.Count

If ListView1.ListItems(i).Checked Then j = j + 1

tmpArry(j) = ListView1.ListItems(i).SubItems(1) End If Next

'循环更新第i行,第一列内容 Dim rs2 As ADODB.Recordset Set rs2 = New ADODB.Recordset For k = 0 To j

rs2.Open \adOpenKeyset, adLockOptimistic

rs2.Fields(\ rs2.Update rs2.Close Next

'刷新ListView1控件中的内容 ListView1.ListItems.Clear Call Form_Load

' 循环输出数组,测试用 ' tmp = \

' For k = 0 To j

' tmp = tmp & tmpArry(k) & \' Next

' Text2.Text = tmp End Sub

总结:ListView控件功能十分丰富,可以设置按列标题进行排序,并且可以很好的设置隔行颜色等功能。是一个很好用的数据控件。本文中向控件ListView1添加数据方法较为繁琐,读者可以通过设置数据库字段内容不为空后直接循环添加,或者按照自己的思路进行添加。

本文来源:https://www.bwwdw.com/article/5hh5.html

Top