admin 管理员组

文章数量: 887021


2024年2月19日发(作者:嵌入式培训出来找不到工作)

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

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

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

红色方框部分用方法表示并添加。

蓝色方框部分用ms(i)方法表示并添加。起始索引为1 。

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

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

Public Function cnn() As tion

Set cnn = New tion

"Provider=SQLOLEDB.1;Password=ldg730108;Persist Security

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的样式为报表样式

= lvwReport

'设置ListView1可以复选

oxes = True

'声明一个记录集

Dim rs As set

'设置一个新的记录集

Set rs = New set

'打开表wink

"select * from wink", cnn, adOpenKeyset, adLockOptimistic

'设置ListView1的列标题

Dim clmX As ColumnHeader

Set clmX = (, , "Id", / 6)

Set clmX = (, , "Name", / 6)

Set clmX = (, , "Sex", / 6)

Set clmX = (, , "Age", / 6)

Set clmX = (, , "Address", / 6)

Set clmX = (, , "Birth", / 6)

'将数据库内容添加到ListView1中

Dim itmX As ListItem

While Not

Set itmX = (, , ("id"))

If Not IsNull(rs!Name) Then

ms(1) = ("name")

End If

If Not IsNull(rs!sex) Then

ms(2) = ("sex")

End If

If Not IsNull(rs!age) Then

ms(3) = ("age")

End If

If Not IsNull(rs!address) Then

ms(4) = ("address")

End If

If Not IsNull(rs!birth) Then

ms(5) = ("birth")

End If

'移动到下一条记录。

xt

Wend

End Sub

二、实现单选功能

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

Private Sub Command1_Click()

'单选

For i = 1 To

'如果复选框打“√”则把打对号行的第一列内容显示在文本框中。

If ems(i).Checked = True Then

= ems(i).SubItems(1)

End If

Next

End Sub

三、实现全选功能

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

Private Sub Command2_Click()

'循环至ListView1的总记录数

For i = 1 To

'全选

ems(i).Checked = True

Next

End Sub

四、实现全不选功能

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

Private Sub Command3_Click()

'循环至ListView1的总记录数

For i = 1 To

'全不选

ems(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

If ems(i).Checked Then

j = j + 1

tmpArry(j) = ems(i).SubItems(1)

End If

Next

'循环更新第i行,第一列内容

Dim rs2 As set

Set rs2 = New set

For k = 0 To j

"select * from wink where name = '" & tmpArry(k) & "'", cnn,

adOpenKeyset, adLockOptimistic

("sex") =

Next

'刷新ListView1控件中的内容

Call Form_Load

' 循环输出数组,测试用

' tmp = ""

' For k = 0 To j

' tmp = tmp & tmpArry(k) & ","

' Next

' = tmp

End Sub

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


本文标签: 控件 内容 设置 数据库 方法