加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

vb6中treeview的使用方法

(2010-11-05 08:04:35)
标签:

杂谈

【实验名称】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.在数据表中插入一些信息:
[地区信息]

   华北地区                  DT01               

   华东地区                  DT02               

   华中地区                  DT03               

   华南地区                  DT04               

[城市信息]

   青岛                      DT02               

   北京                      DT01               

   河北                      DT01               

   济南                      DT02               

   郑州                      DT03               

   杭州                      DT04               

   上海                      DT04               

   广州                      DT04               

3.VB6建立标志的EXE工程,Ctrl+T,部件中加入:Microsoft Windows Common Control6.0(SP6)。
4.在窗体上添加一个TreeView控件,命名为tvwDiQu;一个ImageList控件,名称保留为ImageList1.初始化ImageList1,添加三张图片(右击—>属性)。
5.在FormLoad事件中加入如下代码:

 

01.Public rsDiQu As ADODB.Recordset  
02. 
03.Public rsChengShi As ADODB.Recordset  
04. 
05.   
06. 
07.   
08. 
09.Private Sub Form_Load()  
10. 
11.   
12. 
13.   tvwDiQu.LineStyle = tvwTreeLines  
14. 
15.   tvwDiQu.ImageList = ImageList1  
16. 
17.   tvwDiQu.Style = tvwTreelinesPlusMinusPictureText  
18. 
19.     
20. 
21.   Dim nodx As Node  
22. 
23.     
24. 
25.   Set rsDiQu = New ADODB.Recordset  
26. 
27.   Set rsChengShi = New ADODB.Recordset  
28. 
29.     
30. 
31.   UnlockDatabase   '打开一个到SQL Server2000的连接Cn  
32. 
33.     
34. 
35.   rsDiQu.Open "select 地区名称,地区ID from 地区信息", Cn   '地区信息  
36. 
37.    If rsDiQu.RecordCount > 0 Then 
38. 
39.      rsDiQu.MoveFirst  
40. 
41.       Do While Not rsDiQu.EOF  
42. 
43.       If rsChengShi.State = adStateOpen Then   '由于要重复使用rsChengShi,所以关闭再打开  
44. 
45.         rsChengShi.Close  
46. 
47.       End If 
48. 
49.       rsChengShi.Open "select * from 城市信息 where 地区ID='" + Trim(rsDiQu.Fields("地区ID")) + "' ", Cn   '每个城市有地区ID,依次选出地区所包括的城市  
50. 
51.       'Trim函数很重要,没有会报错。  
52. 
53.        Set nodx = tvwDiQu.Nodes.Add(, , Trim(rsDiQu.Fields("地区名称")), rsDiQu.Fields("地区名称"), 1) '添加地区(父)节点  
54. 
55.         If rsChengShi.RecordCount > 0 Then 
56. 
57.           Do While Not rsChengShi.EOF  
58. 
59.              'Debug.Print rsChengShi.Fields("城市名称")  
60. 
61.              Set nodx = tvwDiQu.Nodes.Add(Trim(rsDiQu.Fields("地区名称")), tvwChild, , rsChengShi.Fields("城市名称"), 3)  
62. 
63.                '遍历城市,添加城市(子)节点  
64. 
65.              rsChengShi.MoveNext  
66. 
67.              Loop 
68. 
69.         End If  'If rsChengShi.RecordCount > 0  
70. 
71.        rsDiQu.MoveNext    '添加下一个地区及其包括的城市  
72. 
73.       Loop 
74. 
75.           
76. 
77.    End If   'If rsDiQu.RecordCount > 0  
78. 
79.      
80. 
81.    DestroyRs rsDiQu  
82. 
83.    DestroyRs rsChengShi  
84. 
85.   
86. 
87.End Sub

 

1、属性

这里只给大家介绍Treeview控件的几个常用基本属性

appearance属性:设置空间是否以3D效果显示
详细的外观设置可以转到此控件的“自定义”页面进行设置

checkboxes属性:在树的每一项的旁边,是否显示一个复选框,类似checkbox控件的作用

hottracking属性:当鼠标指针经过某个条目时,这些条目是否突出显示,类似网页的超链接效果

labeledit属性:决定用户是否能编辑控件中列出的项目,此项如果不想被改变,可将属性值设置为1

linestyle属性:设置列出的每项之间的行样式,即,如果为1,则当前项下还有子项的时候,它的前面会显示“+”号,如果值为2,则不显示“+”

singlesel属性:设置在树中选择新的条目时,是否展开此条目并收拢前一个条目,即,设置为True时,并且当前选中的条目有子项的时候,会把子项展开,并将原来你选中的条目收拢,这一点很实用。

style属性:设置Treeview控件的每个列表的组成方式,比如“图片”+“文本”方式,等等,这样你就可以把Treeview弄得更好看一些。

2、用法介绍:

一、Treeview控件添加条目和子条目通常使用ADD方法,其语法如下:

object.Nodes.Add(relative,[relationship][,key][,text][,image][,selectedimage])

其中:

relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。
relationship 参数是通过关系节点参数与新节点连接的另一个节点;参数可能是以下情况:

1-tvwlast    该节点置于所有其他的在relative中被命名的同一级别的节点的后面
2-tvwNext    该节点置于在relative中被命名节点的后面
3-tvwPrevius 该节点置于在relative中被命名的节点的前面
4-tvwChild   该节点成为在relative中被命名的节点的的子节点

key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。

text 必需的。在 Node 中出现的字符串。

  image 可选的。在关联的 ImageList 控件中的图像的索引。

selectedimage 可选的。在关联的 ImageList 控件中的图像的索引,在 Node 被选中时显示。

详细语句可参考下列程序代码:

创建父节点条目
TreeView.Nodes.Add , , "Father", "Father"

创建此节点的子节点条目
TreeView.Nodes.Add "Father", tvwChild, , "Child"

注意创建子节点的时候,relative参数为父节点的文本"Father"

二、添加图像

为节点插入图象可参考语句:

   Treeview.node(index).image="图片名"
可以参考

Nodes.Add(relative,[relationship][,key][,text][,image][,selectedimage])

中的image和selectedimage项

注:一般从imagelist控件中指定图象

三、触发事件

节点条目的单击click事件,将触发NodeClick事件

可在此添加你想要执行的代码,如:

Private Sub Command1_Click()

TreeView1.Nodes.Add , , "a", "Father"

TreeView1.Nodes.Add , , "b", "Father"

TreeView1.Nodes.Add "a", tvwChild, , "地地"

TreeView1.Nodes.Add "a", tvwChild, , "产是"

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

If TreeView1.SelectedItem.Text = "地地" Then

Command2.Visible = False

ElseIf TreeView1.SelectedItem.Text = "产是" Then

Command2.Visible = True

End If

End Sub

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有