【实验名称】VB6控件TreeView的使用
【实验原理】在FormLoad事件的时候,以TreeView中显示数据库中数据表的结构信息。
【实验步骤】
1.使用SQL Server2000数据库建立两个数据表:
CREATE TABLE [地区信息] (
[系统ID] [int] IDENTITY (1, 1) NOT NULL ,
[地区名称] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[地区ID] [char] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [城市信息] (
[系统ID] [int] IDENTITY (1, 1) NOT NULL ,
[城市名称] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[地区ID] [char] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.在数据表中插入一些信息:
[地区信息]
1 华北地区 DT01
2 华东地区 DT02
3 华中地区 DT03
4 华南地区 DT04
[城市信息]
1 青岛 DT02
2 北京 DT01
3 河北 DT01
4 济南 DT02
5 郑州 DT03
6 杭州 DT04
7 上海 DT04
8 广州 DT04
3.VB6建立标志的EXE工程,Ctrl+T,部件中加入:Microsoft Windows Common Control6.0(SP6)。
4.在窗体上添加一个TreeView控件,命名为tvwDiQu;一个ImageList控件,名称保留为ImageList1.初始化ImageList1,添加三张图片(右击—>属性)。
5.在FormLoad事件中加入如下代码:
Public rsDiQu As ADODB.Recordset Public rsChengShi As ADODB.Recordset Private Sub Form_Load() tvwDiQu.LineStyle = tvwTreeLines tvwDiQu.ImageList = ImageList1 tvwDiQu.Style = tvwTreelinesPlusMinusPictureText Dim nodx As Node Set rsDiQu = New ADODB.Recordset Set rsChengShi = New ADODB.Recordset UnlockDatabase '打开一个到SQL Server2000的连接Cn rsDiQu.Open "select 地区名称,地区ID from 地区信息", Cn '地区信息 If rsDiQu.RecordCount > 0 Then rsDiQu.MoveFirst Do While Not rsDiQu.EOF If rsChengShi.State = adStateOpen Then '由于要重复使用rsChengShi,所以关闭再打开 rsChengShi.Close End If rsChengShi.Open "select * from 城市信息 where 地区ID='" + Trim(rsDiQu.Fields("地区ID")) + "' ", Cn '每个城市有地区ID,依次选出地区所包括的城市 'Trim函数很重要,没有会报错。 Set nodx = tvwDiQu.Nodes.Add(, , Trim(rsDiQu.Fields("地区名称")), rsDiQu.Fields("地区名称"), 1) '添加地区(父)节点 If rsChengShi.RecordCount > 0 Then Do While Not rsChengShi.EOF 'Debug.Print rsChengShi.Fields("城市名称") Set nodx = tvwDiQu.Nodes.Add(Trim(rsDiQu.Fields("地区名称")), tvwChild, , rsChengShi.Fields("城市名称"), 3) '遍历城市,添加城市(子)节点 rsChengShi.MoveNext Loop End If 'If rsChengShi.RecordCount > 0 rsDiQu.MoveNext '添加下一个地区及其包括的城市 Loop End If 'If rsDiQu.RecordCount > 0 DestroyRs rsDiQu DestroyRs rsChengShi End Sub
6.运行,双击父节点打开或关闭子节点。效果图如下: