vb TreeView 控件应用实例
第15讲 TreeView控件应用
14
三、从XML文件读取节点数据(4/5) 文件读取节点数据
这个XML文档中只允许有一个根标签 <TREENODES></TREENODES>,所有的节点标签都必 须放在这个根标签之内,标签标记TREENODES必须大写。 每个节点标签<TreeNode ></TreeNode>中定义一个节 点,节点标签可以嵌套,嵌套层次表明了节点的结构关系。 (三)指定 (三)指定TreeView控件的TreeNodeSrc属性 指定TreeView控件的 控件的TreeNodeSrc属性 需要指定TreeView控件的TreeNodeSrc属性,以指示 TreeView控件的节点数据和结构来自文件。注打开 TreeView控件的属性窗口,在TreeNodeSrc属性上指定其 值为刚编写的那个文件“XMLTreeViewNode.xml”。
程序设计
李德奇主编
15
三、从XML文件读取节点数据(5/5) 文件读取节点数据
(四)控件效果 四 控件效果
运行程序,效果如下图。
程序设计
李德奇主编
16
四、TreeView控件应用举例(1/10) 控件应用举例
(一)获取用户选择的节点 一 获取用户选择的节点 程序运行后,用户会在TreeView控件上操作,或者展开节 点,或者折叠节点,或者选择(打开)某一个节点。当用户选 择(打开)了某个节点之后,程序必然需要有所动作来对用户 的选择作出响应。例如在Windows资源管理器中,当用户在左 边的资源结构树上选择某个节点后,需要在右边的资源内容区 显示出该节点的所有资源。在Web应用程序的页面上使用 TreeView控件时,一般也会参照这个习惯。为此,获取用户对 节点的选择信息就显得必要了。 (二)两种获得用户选择节点信息的方法 二 两种获得用户选择节点信息的方法 ①TreeView控件的SelectedNodeIndex属性保存了用户 选择节点的索引号,该属性的文本是形如”x.y.z..”的结构。例 如当TreeView1. SelectedNodeIndex.Text的值为“0.2.1”时, 用户选择的节点在第一层的索引号为0,第二层的索引号为2, 第三层的索引号为1,根据这个索引号可以确定用户选择了哪 个节点。 17 程序设计 李德奇主编
VB控件-treeview用法详解
VB TreeView控件使用详解(2012-06-16 15:08:16)转载▼分类:VB编程笔记标签:it第一小时:学习直接用代码将数据填充到树控件中。
为什么要先学习直接用代码将数据填充到树控件中?因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。
目的:我们要在树控件中建立如下的一个3层级关系水果||__苹果| |__红富士| |__国光||__葡萄|__红提子|__青提子解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。
在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。
概括如下:爷(只能有一个):水果父(这里有2个):父1:苹果;父2:葡萄子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子)1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist如何找到这两个控件?Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version 6.0"Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version 6.0"Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。
2、设置这两个控件的属性首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。
一种是设置这个控件本身的属性。
VBtreeview使用示例代码(从数据库中读入)_天之蓝
VBtreeview使用示例代码(从数据库中读入)_天之蓝数据库连接参数设置'*****定义数据库连接参数Dim rs As New ADODB.ConnectionDim bs As New ADODB.RecordsetDim sql As String '查询字符串Dim filename As String '数据库名称Dim ctrFi '连接字符串Dim nodX As Node '树形控件节点类型定义连接并打开数据库:'******连接并打开数据库**********Public Sub connectdata()filename = App.Path + "\" + "123.mdb"ctrFi = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & filenamers.Open ctrFiEnd Sub数据库中表与字段设置:数据库名称:123.mdb表一:名称:usere字段:user(字符型),type(字符型)表二:名称:typer字段:usertype(字符型)窗口上加入一个Imagelist控件,加入3个图标,再加入一个treeview控件,treeview控件图标属性与imagelis关联(即在treeview 控件上点右键,选择图像列表里的imagelist1,必须先添加imagelist1控件才有显示)添加节点代码:TreeView1.LineStyle = tvwRootLinesCall connectdatasql = "select * from typer" '添加根节点bs.Open sql, rs, 1If bs.RecordCount <> 0 Thenbs.MoveFirstDo While bs.EOF = FalseSet nodX = TreeView1.Nodes.Add(, , bs.Fields("usertype").Value, bs.Fields("usertype").Value, 3) bs.MoveNextLoopEnd Ifbs.Closers.Close'***添加子节点***Call connectdatasql = "select * from usere"bs.Open sql, rs, 1If bs.RecordCount <> 0 Thenbs.MoveFirstDo While bs.EOF = FalseSet nodX = TreeView1.Nodes.Add(bs.Fields("type").Value, tvwChild, bs.Fields("user").Value, bs.Fields("user").Value, 2) bs.MoveNextLoopEnd Ifbs.Closers.Close。
VB控件 treeview用法详解
VB TreeView控件使用详解(2012-06-16 15:08:16)标签:分类:第一小时:学习直接用代码将数据填充到树控件中。
为什么要先学习直接用代码将数据填充到树控件中因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。
目的:我们要在树控件中建立如下的一个3层级关系水果||__苹果| |__红富士| |__国光||__葡萄|__红提子|__青提子解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。
在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。
概括如下:爷(只能有一个):水果父(这里有2个):父1:苹果;父2:葡萄子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子)1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist如何找到这两个控件Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version "Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version "Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。
2、设置这两个控件的属性首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。
一种是设置这个控件本身的属性。
要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。
duilib treeview 用法总结
duilib treeview 用法总结下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!当今社会,随着信息化的发展,人们对于数据的展示和管理需求日益增加。
VB 6.0 treeview 运用
VB 6.0 treeview运用技术一览Option ExplicitDim I As IntegerDim J As IntegerDim nodx As NodeDim CunZai As Boolean '定义变量Private Sub Command1_Click()If Txt(0).Text <> "" And Txt(1).Text <> "" Then '不允许建立零字节的父节点和子节点CunZai = FalseJ = TreeView1.Nodes.CountFor I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在If TreeView1.SelectedItem.Children > 0 ThenIf Txt(0).Text = TreeView1.Nodes(I).Text Then CunZai = TrueEnd IfNext IIf CunZai = True Then '若存在, 则在父节点下建立子节点Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,Txt(1).Text, 3)Else ,若不存在,则建立父节点和子节点Set nodx = TreeView1.Nodes.Add(, , Txt(0).Text, Txt(0).Text, 1)Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,_Txt(1).Text, 3)End IfTreeView1.RefreshElseIf Txt(0).Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!"'系统提示ElseIf Txt(1).Text = "" Then MsgBox "请输入子节点名称!", vbInformation, "警告!"End IfEnd SubPrivate Sub Command2_Click()For I = 1 To TreeView1.Nodes.CountTreeView1.Nodes(I).Expanded = True '展开所有节点Next IEnd SubPrivate Sub Command3_Click()For I = 1 To TreeView1.Nodes.CountTreeView1.Nodes(I).Expanded = False '收起所有节点Next IEnd SubPrivate Sub Command4_Click()TreeView1.Sorted = True '排列顺序End SubPrivate Sub Command5_Click()If TreeView1.SelectedItem.Index <> 1 ThenTreeView1.Nodes.Remove TreeView1.SelectedItem.Index '删除选定的节点End IfEnd SubPrivate Sub Command6_Click()End '退出程序End SubPrivate Sub Form_Load()TreeView1.LineStyle =TvwTreeLines '在兄弟节点和父节点之间显示线TreeView1.ImageList = ImageList1 '链接图像列TreeView1.Style = tvwTreelinesPlusMinusPictureText'树状外观包含全部元素Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1)'建立名称为"蒲子明"的父节点,选择索引为1的图像Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3) '在"蒲子明"父节点下建立"收件箱"子节点,选择索引为3的图像Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "发件箱", 3) '在"蒲子明"父节点下建立"发件箱"子节点,选择索引为3的图像CunZai = FalseEnd SubPrivate Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node) Node.ExpandedImage = 2 '节点被展开时,选择索引为2的图像End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) If TreeView1.SelectedItem.Children = 0 Then '检查是否有子节点,0为无For I = 1 To TreeView1.Nodes.CountIf TreeView1.Nodes(I).Selected ThenMsgBox "您选择的是:“" & TreeView1.Nodes(I).FullPath & "”子节点!"'系统提示End IfNext IEnd If End Sub。
VFP6.0中ActiveX控件TreeView使用实例
VFP6.0中ActiveX控件TreeView 使用实例ActiveX control TreeView using instances in VFP6.0ActiveX controls have long been used as an important tool for most program developers. Since it has nothing to do with the development language, you can use ActiveX controls on any software platform that supports ActiveX controls. Just as freely as using WINDOWS controls. However, many problems met ActiveX in specific to a certain development tools to use, this in a lot of publication of the article have often been discussed, but most are for Vc, Delphi, VB, PB and other development platform under the ActiveX control. In fact, the use of ActiveX controls in the above platform can basically help in its function, developers in accordance with their example, and ultimately can find the ActiveX control properties, methods, the use of events instructions. Even some development tools have made it convenient for developers to use some ActiveX controls as their common form controls.But in the VFP development platform, to use the ActiveX control as the development tool that lucky, because the VFP was not related to the grammatical descriptions and examples, the VFP developers feel embarrassed and confused. Because there are very few articles on this subject. Therefore, the author is in the development of "real estate sales software" as an example to introduce the specific use of TreeView controls in VFP, for the sake of the author of the same VFP colleagues reference.First, introduce the TreeView controlThe TreeView control displays a hierarchical list of Nodeobjects, each of which consists of a tag and an optional bitmap Node. TreeView is typically used to display document titles, index entries, files and directories on disk, or other kinds of information that can be effectively layered.The Node object is an item in the TreeView control that contains images and text. The Nodes collection contains one or more Node objects. Syntax: treeview.Nodes, treeview.Nodes.Item (index). You can use standard collection methods (such as Add and Remove methods) to operate Node objects. You can access each element in the collection by its index or the unique key stored in the Key property. To select the specified Node object, you must refer to it through its Index attribute or the value of the Key property.Add a Node object in the Nodes collection of the Treeview control: object.Add (relative, relationship, key, text, image, selectedimage). The Nodes collection is a collection based on 1. When a Node object is added, it is assigned an index number that is stored in the Index attribute of the Node object. The Index attribute value of this latest member is the value of the Count property of the Node collection. Because the Add method returns a reference to the newly created Node object, it is very convenient to use this reference to set the properties of the new Node. Here are a few properties of the node:Relative is optional. That represents the index number or key value of the existing Node object. The relationship between the new node and the existing node can be found in the next parameter, relationship.Relationship is optional. That represents the relative position of the specified Node object, as in the settings value. The setting value for relationship is:TvwFirst is a constant, and 0 is a value. It represents the node of the head. The Node and the nodes named in the relative are on the same floor and are located before all the same layer nodes.TvwLast is a constant, and 1 is a value. That represents the last node. The Node and the nodes named in the relative are on the same floor and are located behind all the same layer nodes. Any successive addition of nodes may be at the end of the last added nodeTvwNext is a constant, and 2 is the default. It represents the next node. The Node is located after the named node in relative.TvwPrevious is a constant, and 3 is a value. That represents the previous node. The Node is located before the named node in relative.TvwChild is a constant, and 4 is the default. It represents a child node. The Node becomes the child node of the node named in relative.Note that if the Node object is not named in the relative, the new node is placed at the last position of the top level of the node.Key is optional. It represents the only string in the node thatcan be used to retrieve Node using the Item method.Text is required. That represents the string that appears in Node, that is, the name of the node.Index is an integer or string that uniquely identifies a member of the Nodes collection. The integer is the value of the Index property, and the string is the value of the Key property.The FullPath property, which returns the full qualified path of the Node object referenced in the TreeView control. When given to the property as a string variable, the string is set to the FullPath node with the specified index.The Indentation property returns or sets the indent width of the object in the control.The LabelEdit property returns or sets a value that determines whether the label of the Node object in the TreeView control can be edited.Two, source code exampleIn this program, the TreeView control can implement the four layers of relations including the project, the building, the unit and the floor. Users simply click each layer of nodes "+" / "-", you can intuitively observe a project contains several buildings, a building contains several units, a unit and how many floors. By using the table GRID of each page in the page frame PAGEFRAME, you can add records in the corresponding tables and display the corresponding details in the GRID as longas you double-click each layer of nodes. It is worth noting that the program can realize the display of a number of projects, the project node and the project node is a parallel relationship between the same level, only second projects, the first node after the first row. The building node is the sub node of the project node, and the unit node is the sub node of the building node, and the floor node is the child node of the unit node.Source 1, TreeView control initialization work, that is, the form of the Olecontrol1.init event, fill in the source code 1, all the code.Source 2 implementation and page frame, show the corresponding details of the node, that is, the form of theOlecontrol1.NodeClick event, fill in the source code 2 all the code.Source code 1, as follows:LOCAL, M.L_XMCOUNT, I, J, K, L, M.L_NODES, M.L_LYCOUNT,M.L_DYCOUNT, M.L_LCCOUNTTHIS.NODES.CLEAR and remove all nodesBELEDIT=1 can edit node labelTHIS.Indentation=10 and indentation width of 10 pixelsSELECT SF_XMXXSet Dele onM.L_XMCOUNT=RECCOUNT ()FOR I=1 TO M.L_XMCOUNTSELECT SF_XMXXGO IIf! Delete ()(M.L_NODES=THIS.NODES.ADD,'XM'+XM_BH, and XM_MC) to join the first set of nodes and node KEY=XM, TEXT= project.M.L_NODES.EXPANDED=.T. and all the nodes can be foldedM.L_NODES.FORECOLOR=RGB (0,0255) and all nodes set the foreground colorM.P_XMBH=XM_BH=REQUERY ('VIEW_XMLY')M.L_LYCOUNT=RECCOUNT ('VIEW_XMLY')IF M.L_LYCOUNT>0FOR J=1 TO M.L_LYCOUNTSELECT VIEW_XMLYGO JIf! Delete ()And to the 'projects' parent node join node''KEY=LY TEXT= building, the actual number of buildingsTHIS.NODES.ADD ('XM'+SF_XMXX.XM_BH, 4,'LY'+VIEW_XMLY.LY_BH, VIEW_XMLY.LY_SJBH)M.P_LYBH=VIEW_XMLY.LY_BH=REQUERY ('VIEW_XMDY')M.L_DYCOUNT=RECCOUNT ('VIEW_XMDY')IF M.L_DYCOUNT>0FOR K=1 TO M.L_DYCOUNTSELECT VIEW_XMDYGO KIf! Delete ()To the 'building' parent node and child nodes' join unit'KEY=DY, TEXT= unit numberTHIS.NODES.ADD ('LY'+VIEW_XMLY.LY_BH, 4,'DY'+VIEW_XMDY.DY_BH, ALLTRIM (STR (VIEW_XMDY.DY_SJBH)) + 'unit')M.P_DYBH=VIEW_XMDY.DY_BH=REQUERY ('VIEW_XMLC')M.L_LCCOUNT=RECCOUNT ('VIEW_XMLC')IF M.L_LCCOUNT>0FOR L=1 TO M.L_LCCOUNTSELECT VIEW_XMLCGO LIf! Delete ()To the 'unit' parent node and child nodes join ''KEY=LC TEXT= floor, the actual floor numberTHIS.NODES.ADD ('DY'+VIEW_XMDY.DY_BH, 4,'LC'+VIEW_XMLC.LC_BH, ALLTRIM (STR (VIEW_XMLC.LC_SJCH)) + 'layer')EndifENDFORENDIFEndifENDFORENDIFEndifENDFORENDIFEndifENDFORSource code 2 is as follows:* * * ActiveX control event * * *LPARAMETERS node* * * ActiveX, Contro1l, Event * * *LOCAL, M.L_NODES, M.l_selected,l_indexm.l_selected = thisform.olecontrol1.selecteditem.index m.l_nodes =上。
vb.net treeview tooltiptext 用法案例
treeview tooltiptext 用法案例在中,TreeView控件没有直接的TooltipText属性,但是您可以通过结合ToolTip 控件和TreeView控件的Tag属性来实现类似的效果。
下面是一个简单的例子:首先,在您的窗体上放置一个TreeView控件和一个ToolTip控件。
vbnet复制代码Dim treeView As New TreeView()Dim toolTip As New ToolTip()' 添加一些节点到TreeView中treeView.Nodes.Add("Node 1")treeView.Nodes(0).Nodes.Add("Child Node 1")treeView.Nodes(0).Nodes.Add("Child Node 2")treeView.Nodes.Add("Node 2")然后,您可以遍历TreeView的节点并为每个节点设置ToolTip文本。
这个文本将被显示当用户将鼠标悬停在节点上时。
vbnet复制代码For Each node As TreeNode In treeView.Nodes' 设置ToolTip文本toolTip.SetToolTip(node, "Tooltip text for " & node.Text)' 如果节点有子节点,递归设置子节点的ToolTip文本If node.Nodes.Count > 0ThenFor Each childNode As TreeNode In node.NodestoolTip.SetToolTip(childNode, "Tooltip text for " & childNode.Text)NextEnd IfNext现在,当您将鼠标悬停在TreeView的节点上时,应该能看到相应的ToolTip文本。
VB中TreeView的用法和几个实例
VB中TreeView的用法和几个实例VB中TreeView的用法和几个实例*****************************************1、为树状浏览器控件添加节点和子节点用ADD方法添加一个新节点到树状浏览器的NODES集合时,可以声明它是和已存在的节点所联系起来的。
通常使用ADD方法,其语法如下:Nodes.Add(relative,[relationship][,key][,text][,image][,selecte dimage])各个参数的意义如下:relationship 参数是通过关系节点参数与新节点连接的另一个节点;relationship 参数可能是以下情况:tvwlast--1;该节点置于所有其他的在relative中被命名的同一级别的节点的后面tvwNext--2;该节点置于在relative中被命名节点的后面tvwPrevius--3;该节点置于在relative中被命名的节点的前面tvwChild--4;该节点成为在relative中被命名的节点的的子节点下面是一个例子:Dim node1,node2,node3,node4 as Nodeset Node1=TreeView1.Nodes.AddTreeView1.Nodes(1).text="node1"TreeView1.Nodes(1).key="node1"Set node2=treeview.nodes.add("node1",tvwChild,"node2") TreeView1.Nodes(2).text="node2"TreeView1.Nodes(2).key="node2"依次插入节点即可。
2、为节点插入图象treeview1.node(3).image="leaf"注意我们一般从imagelist中指定图象3、处理节点的点击,怎样才能知道树状浏览器的哪一个节点被点击了呢?可以用NodeClick 事件:public sub treeview1_nodeclick(byval node as comctllib.node) text1.text="you click"&node.textend sub*********************************************************2、TreeView的使用,及选中其中指定的节点’=============Private Sub Command1_Click()Dim nodeY As NodeFor Each nodeY In TreeView1.NodesIf CStr(Trim(nodeY.Text)) = "ff" ThennodeY.Selected = TrueTreeView1.SetFocusExit ForEnd IfNextPrivate Sub Form_Load()/doc/95892732.html,mandType = adCmdTextRs1.RecordSource = "select distinct biao,zu from test order by zu"Rs1.RefreshDim Rs As ADODB.RecordsetSet Rs = Rs1.RecordsetSet nodX = TreeView1.Nodes.Add(, , "r", "报表组 ")i = 0Dim TempString As StringDim TempKey As LongDo Until Rs.EOF Or Rs.BOFIf TempString = Rs!zu ThenSet nodeX = TreeView1.Nodes.Add("Z" & TempKey, tvwChild, "B" & i, Rs!biao)ElseSet nodX = TreeView1.Nodes.Add("r", tvwChild, "Z" & i, Rs!zu) Set nodeX = TreeView1.Nodes.Add("Z" & i, tvwChild, "B" & i, Rs!biao)TempString = Rs!zuTempKey = iEnd IfRs.MoveNexti = i + 1Loop**********************************************************3'功能:选择Treeview节点下所有节点'----------------------------------------------------------------------------Private Sub Form_Load()TreeView1.Checkboxes = TrueTreeView1.Nodes.Add , "R", "root", "root"TreeView1.Nodes.Add "root", tvwChild, "key1", "aa"TreeView1.Nodes.Add "key1", tvwChild, "key11", "ccc"TreeView1.Nodes.Add "root", tvwChild, "key2", "bb"TreeView1.Nodes.Add "key2", tvwChild, "key21", "ddd"TreeView1.Nodes.Add "key2", tvwChild, "key211", "eee"For I = 1 To TreeView1.Nodes.CountTreeView1.Nodes(I).Expanded = TrueNextEnd SubPrivate Sub CheckChild(ByVal Node As MSComctlLib.Node, ByVal bCheck As Boolean, Optional ByVal bNext As Boolean = True, Optional ByVal bChild As Boolean = True)If Not Node Is Nothing ThenNode.Checked = bCheckIf Node.Children And bChild ThenCall CheckChild(Node.Child, bCheck, True, True) '对子节点End IfIf bNext ThenCall CheckChild(Node.Next, bCheck, True, bChild) '对同一层节点End IfEnd IfEnd SubPrivate Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)Call CheckChild(Node, Node.Checked, False, True) '处理子节点End Sub。
vb.net中TreeView控件的使用
中TreeView控件的使用在中TreeView(树型结构)控件是显示节点(Node)对象的级层结构它通常用于显示一些有等级结构的信息我们最为熟悉的就是Windows资源管理器左边显示文件和文件夹的窗口在工具箱中TreeView 控件的图标如下图一所示TreeView控件的每个节点(Node对象)包含了一个标签和可选的点位图每个节点又可能包含有若干个的子节点可以通过控制某个节点来展开显示或者折叠隐藏它所包含的子节点一 TreeView 控件的一些常用属性CheckBoxes 属性指示是否在树视图控件中的树节点旁显示复选框FullRowSelect 属性当 FullRowSelect 为 true 时选择突出显示将跨越树视图的整个宽度即整个显示区域的宽度而不仅仅是树节点标签的宽度如果 ShowLines 设置为 true 则将忽略 FullRowSelect 属性HideSelection 属性指示选定的树节点是否即使在树视图已失去焦点时仍会保持突出显示HotTracking 属性如果 HotTracking 属性设置为 true 那么当鼠标指针移过每个树节点标签时树节点标签都将具有超级链接的外观Underline 字体样式将应用于 Font 而 ForeColor 将设置为蓝色从而使标签显示为链接注意如果CheckBoxes 属性设置为true HotTracking 属性将失效Indent 属性设置每个子树节点级别的缩进距离(以像素为单位) ItemHeight 属性设置树视图控件中每个树节点的高度Nodes 属性获取分配给树视图控件的树节点集合这个属性是TreeView 控件最重要的属性之一我们下文将会对它进行更加的详细的说明PathSeparator 属性树节点路径(TreeNode FullPath 属性)所使用的分隔符串默认为反斜杠字符(\) 树节点路径包括一组由PathSeparator 分隔符串分隔的树节点标签标签的范围为根树节点到所需的树节点如下代码我们可以获得当前选中的节点的路径MessageBox Show(TreeView SelectedNode FullPath)SelectedNode 属性获取或设置当前在树视图控件中选定的树节点如果没有选定任何节点则 SelectedNode 属性则为Nothing ShowLines 属性指示是否在树视图控件中的树节点之间绘制连线ShowPlusMinus 属性指示是否在包含子树节点的树节点旁显示加号 (+) 和减号 ( ) 按钮ShowRootLines 属性指示是否在树视图根处的树节点之间绘制连线如下图二所示为ShowLines 属性ShowPlusMinus 属性ShowRootLines 属性都设置为True的情形二为TreeView 控件添加节点TreeView 控件的 Nodes 属性包含了它所有的节点下面我们就来了解如何为树状控件添加节点通过树节点编辑器添加选中TreeView 控件在它的属性对话框中找到Nodes 属性然后单击它后面的省略号弹出树节点编辑器如下图三所示然后通过编辑器上的添加根来添加根节点通过添加子级来为选中的节点添加子节点通过删除来删除选定的节点标签输入框确定节点的名称注意只有设置了TreeView 控件的ImageList 属性才能选择设置节点的图像通过编程方式添加节点给TreeView添加结点用到的是Nodes Add 方法首先选定要添加子结点的结点才能应用这个方法TreeView中的结点的组织关系是父结点管理子结点的关系也就是说子结点组成的集合就是父结点的 Nodes 属性子结点的 Index 属性是根据其在子结点集合中的位置而决定的而不是整棵树中结点的位置根据这个特点若想找到指定结点须按以下的语法TreeViewName Nodes Item(Index ) Nodes而添加结点的方法为TreeViewName Nodes Item(Index ) Nodes Add( NodeText )或TreeViewName Nodes Item(Index ) Nodes Add( objNode ) 如下代码所示为选中的节点添加一个子节点TreeView SelectedNode Nodes Add( )编程删除节点使用Nodes属性的Remove 方法删除单个节点也可以使用Clear 方法清除所有的节点如下代码所示删除选定的节点TreeView Nodes Remove(TreeView SelectedNode)清除TreeView 控件的所有节点TreeView Nodes Clear()示例演示我们现在用一个实例来看如何使用Nodes属性来实现代码编程添加删除树形控件的节点首先为设计如下图四所示的程序界面其中有四个Button 控件一个TreeView 控件为添加根节点按钮添加如下代码TreeView Nodes Add( 根节点& (TreeView GetNodeCount(False) + ))注意GetNodeCount方法为获得本级别的节点数可以通过参数False来指定不包括它的子节点为添加子节点按钮添加如下代码Dim node As TreeNode = TreeView SelectedNodeIf Not node Is Nothing Thennode Nodes Add( 子节点 & (node GetNodeCount(False) + ))ElseMessageBox Show( 没有选中任何节点 )End If注意 TreeNode GetNodeCount 方法返回的是分配给 Nodes 集合的子树节点的数目为删除单个节点按钮添加代码Dim node As TreeNode = TreeView SelectedNodeIf node Is Nothing ThenMessageBox Show( 没有选中任何节点 )ElseTreeView Nodes Remove(node)End If为删除所有节点按钮添加代码TreeView Nodes Clear()代码添加完毕后运行程序分别使用添加根节点添加子节点为控件添加节点如下图五所示然后再试验删除节点的效果三访问控件的所有节点因为Nodes集合中所包含的只是本级节点的集合如果某个Node 包含有子节点并不会从当前的Nodes体现出来如下代码所示我们只能访问到所有的根节点而不是所有的节点假定我们是在前面示例的基础上添加一个名为遍历节点的按钮然后在该按钮的Click事件中添加如下代码Dim node As TreeNodeDim str As String =For Each node In TreeView Nodesstr = str & node Text & vbCrNextMessageBox Show(str)node = Nothing运行后先分别为控件添加若干个根节点与子节点然后单击遍历节点按钮效果如下图六所示很明显我们遍历了Nodes集合但是并没有如期访问到子节点怎么解决这个问题呢?请看下一页如上页的问题我们假设一个根节点的Nodes集合为Nodes 该集合中的一个Node节点为Node Node 下有若干个子节点我们把它的子节点的集合称为Nodes 我们用For Each 遍历Nodes 时它访问到Node 但不会访问Nodes 集合如果我们要访问Nodes 就需要像遍历Nodes 一样遍历Nodes 解决办法如下首先建立一个过程用于遍历一个Node节点下的子节点Private Sub PrintNode(ByVal N As TreeNode)Debug WriteLine(N Text)Dim node As TreeNodeFor Each node In N NodesPrintNode(node)NextEnd Sub然后把遍历节点的Click事件中修改为如下代码Dim node As TreeNodeFor Each node In TreeView NodesPrintNode(node)Nextnode = Nothing运行后先分别为控件添加若干个根节点与子节点然后单击遍历节点按钮然后查看输出窗口效果如下图七所示可以发现已经能真正地遍历了所有节点lishixinzhi/Article/program/net/201311/11617。
vbtreeview获取子项的值
vbtreeview获取子项的值vbtreeview 是 Visual Basic for Applications(VBA) 中的一个组件,用于管理列表视图。
使用 vbtreeview,可以方便地显示和组织列表中的项目。
要获取子项的值,可以使用 vbtreeview 的NodeValue 属性。
下面是获取子项值的示例代码:```Private Sub btnSelect_Click()Dim selectedNode As Node" 获取选中节点的父节点Dim parentNode As NodeFor Each parentNode In treeView1.NodesIf = " Then" 获取选中节点的子节点For Each childNode In parentNode.NodesIf = " Then" 获取选中节点的子节点值selectedNode.Text = childNode.Text" 选中节点的 NodeValue 属性返回子节点的值selectedNode.NodeValue = childNode.NodeValueExit ForEnd IfNext childNode" 返回选中节点的父节点Exit FunctionEnd IfNext parentNodeEnd Sub```在上面的代码中,btnSelect_Click 事件处理程序中的btnSelect 按钮被单击时,该程序将获取选中节点的父节点。
然后,使用 vbtreeview 的 NodeValue 属性,将选中节点的子节点值设置为文本框中,并将选中节点的父节点返回到程序中。
要获取子项的值,需要先获取选中节点的父节点,然后遍历父节点的子节点,直到找到选中节点的子节点。
如果找到,则使用vbtreeview 的 NodeValue 属性获取子节点的值,并将其设置为文本框中的值。
在VisualFoxPro中使用TreeView控件TreeView控件VFP时...
在VisualFoxPro中使用TreeView控件TreeView控件VFP时...在Visual FoxPro中使用TreeView控件如果用户在设计程序时,需要用一种树形结构生动形象地显示具有不同层次的数据,那么TreeView控件将是最合适的选择。
TreeView控件可以将用户选定的数据,也可以是从数据库中检索出来的数据,供用户自由的选择、展开或折迭收起。
TreeView控件主要用以显示层次数据之间的关系。
TreeView控件的特点包括以下几个方面:1、将相互间有联系的数据用图形与文字方式以树形描绘,以树形节点(Node对象)的形式展开或收起数据;2、每一个节点可以用图标和文本标签来描述;3、标签可以设置为是否允许修改的属性;4、对层次深度和节点数目无限制,只受系统资源的限制。
另外,使用TreeView控件对管理信息量很大的数据来说,是一个很好的方式,因为用户能从中简单快速的选择到所需要的数据。
Windows资源管理器就是TreeView控件、ImageList控件与ListView控件配合应用的一个例子。
TreeView控件是Microsoft Visual Studio 中的一个控件,它是Mscomctl.ocx文件中的一组ActiveX控件的一部分。
当安装了Visual FoxPro或Visual Basic后就可以在Windows的System目录中找到这个文件。
为了在发布的应用程序中使用TreeView控件,必须将Mscomctl.ocx文件与应用程序一起做成安装盘发布。
这个控件在Visual FoxPro 5.0中的版本是5.0,但是该控件的5.0版本不支持6.0版本的一些属性、方法和事件,所以要尽量使用6.0版本。
如果没有Visual FoxPro 6.0也可以,只要找到Mscomctl.ocx这个文件并将其注册,就可以在Visual FoxPro 5.0中使用该控件的6.0版本。
vb 利用TreeView控件实现一个应用程序的导航
软件开发环境与工具实验报告实验四实验题目:利用TreeView控件实现一个应用程序的导航实验类型:验证性指导老师:王琦专业班级:计算机科学与技术系1001班学号: 2010100152姓名:陈振北2012年 12月 1日一、实验题目利用TreeView控件实现一个应用程序的导航二、实验目的通过本次实验,使学生进一步掌握编程模型,掌握树形数据的存储方法,掌握TreeView控件与树形数据的操作,能够搭建一个系统的运行框架,为课程设计做好准备。
三、实验功能要求1、设计树形结构的数据库表2、实现树形数据和TreeView的绑定3、最好能够实现应用程序导航的自定义4、用.NET分层架构设计。
5、单据的具体内容自定。
实验报告要求:1、对所用到的技术要做详细说明。
2、对数据库库表设计要做说明。
3、给出核心代码,并要有详细的注释。
4、给出程序运结果,并做相应测试。
5、要有实验总结收获及体会。
最终要提交实验报告及实验代码。
四、实验步骤1.写入一个数据库,结构设计为:2,在窗体中加载一个TREEview控件,并在主体界面中展示代码Private Sub 首页L_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.LoadCall Me.InitTree()F_load.MdiParent = MeF_load.Show()F_load.WindowState = FormWindowState.MaximizedEnd Sub3,单机左键的显示以及相关控制Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClickIf e.Button <> Windows.Forms.MouseButtons.Left ThenExit SubEnd IfIf e.Node.Tag = "" ThenExit SubEnd IfDim frmName As StringfrmName = "设计." & e.Node.TagDim frm As Formfrm =CType(Activator.CreateInstance(Type.GetType(frmName)), Form) frm.MdiParent = Mefrm.Show()frm.WindowState = FormWindowState.MaximizedEnd Sub4.运行程序的主界面为:五、实验结果了解了属性目录的结构属性以及相关的属性方法。
vb.net treeview的用法
TreeView的用法1. 简介中的TreeView是一种常见的控件,用于显示层级结构数据,例如文件夹和文件的结构、组织结构等。
它可以帮助用户更清晰地理解数据之间的关系,并提供交互式的展开和折叠功能。
2. 基本用法在中使用TreeView控件非常简单。
我们需要在窗体中添加一个TreeView控件,然后可以通过编程的方式添加节点和子节点。
每个节点都可以包含文本、图标和其他自定义内容。
3. 节点的操作通过TreeView控件,我们可以对节点进行多种操作,包括添加、删除、展开和折叠等。
这样用户可以根据需要动态地构建和修改树形结构,使得数据的呈现更加灵活和可控。
4. 事件处理TreeView控件提供了丰富的事件,允许我们在节点被选择、展开、折叠等操作时进行相应的处理。
通过事件处理,我们可以实现一些交互逻辑,例如在节点展开时加载子节点的数据。
5. 数据绑定除了手动添加节点,TreeView控件还支持数据绑定的方式。
这样我们可以通过绑定数据源的方式,自动构建树形结构,减少了大量的编码工作。
6. 深入理解了解了TreeView控件的基本用法之后,我们可以深入探讨一些高级的用法,例如节点的拖拽、自定义节点样式、节点的数据绑定和使用等。
总结:通过本文的介绍,我们对中TreeView控件的基本用法有了初步的了解。
TreeView控件可以帮助我们清晰地展现层级结构数据,并提供丰富的操作和事件处理功能,使得数据的展示和交互更加灵活和可控。
希望读者可以通过本文的介绍,更加深入地理解和应用TreeView控件。
个人观点:在实际开发中,TreeView控件是一种非常常用且强大的控件,可以帮助我们解决很多展示层级结构数据的问题。
通过合理的设计和使用,TreeView控件可以极大地提高用户体验和数据展示的效果。
我个人认为,熟练掌握TreeView控件的用法对于开发者来说是非常有必要的。
以上就是我对 TreeView的用法的介绍,希望对你有所帮助。
树控件TreeView
树控件TreeView---实例1 添加TreeView控件在“控件工具箱”中单击鼠标右键,从弹出的快捷菜单中选择“附加控件”(如图1所示),出现“附加控件”对话框。
在该对话框中,找到“Microsoft TreeView Control,version 6.0”并选中前面的复选框,如图2所示,单击“确定”按钮。
图1:在工具箱中单击右键,选择“附加控件”。
图2:在“附加控件”对话框选中“TreeView控件”。
注:下面的示例中可能要用到ImageList控件和ImageCombo控件,因此,将这两个控件也添加到“控件工具箱”中。
最后的控件工具箱如图3所示。
图3:添加控件后的工具箱。
2 TreeView控件概述TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。
TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。
创建了TreeView控件之后,可以通过设置属性与调用方法对各Node对象进行操作,这些操作包括添加、删除、对齐和其它操作。
可以编程展开与折叠Node对象来显示或隐藏所有子节点。
Collapse、Expand和NodeClick三个事件也提供了编程功能。
2.1 常用属性(1) Nodes属性返回对TreeView控件的Node对象的集合的引用。
[语法] object.Nodesobject代表一个对象表达式。
可以使用标准的集合方法(例如:Add和Remove方法)操作Node对象,可以按其索引或存储在Key属性中的唯一键来访问集合中的每个元素。
(2) Style属性返回或设置图形类型(图象、文本、+/-号、直线)以及出现在TreeView控件中每一Node对象上的文本的类型。
[语法] object.Style [ = number]Object代表一个对象表达式,number指定图形类型的整数,number 的设置值是:0仅为文本;1为图象和文本,2为+/-号和文本;3为+/- 号、图象和文本;4为直线和文本;5为直线、图象和文本;6为直线、+/-号和文本;7(缺省)为直线、+/- 号、图象和文本。
实例分析VB.NETTreeview结构
实例分析Treeview结构这⾥介绍 Treeview结构,Treeview是由节点TreeNode组成的,第⼀级的称之为根节点TreeRoot,在根节点之下⼀级的称之为某个根节点的⼦节点TreeLeaf,某个⼦节点之下⼀级的⼦节点就称为该⼦节点的⼦节点。
本⼈很喜欢,在⼯作中也很喜欢总结关于 Treeview结构的经验教训,我们简单分析⼀下 Treeview结构(笔者准备在另⽂专门剖析⼀下 Treeview结构,以⽅便有兴趣的⽹友进⾏⾼级应⽤)Treeview是由节点TreeNode组成的,第⼀级的称之为根节点TreeRoot,在根节点之下⼀级的称之为某个根节点的⼦节点 TreeLeaf,某个⼦节点之下⼀级的⼦节点就称为该⼦节点的⼦节点。
第个节点有两个标识⽅式,⼀个是它的Text,即显⽰出来的内容;另⼀个是它的 Tag属性,⼀般⽤唯⼀标识码对其进⾏标识,以⽤于在使⽤时对节点的识别。
在本⽂中,也主要⽤Text属性来显⽰节点的名称字段,⽤Tag属性来显⽰节点的编号属性。
(节点编号被设为主键,也就是唯⼀的标识了)1.加载根节点好了,我们该开始在中进⾏演练了!第⼀步,当然是看看怎么在窗体起始的时候加载根节点:1. '定义公⽤变量2. Dim myconnection As New OleDb.OleDbConnection()3. Dim MyAdapater As New OleDb.OleDbDataAdapter()4. Dim mycommand As New OleDb.OleDbCommand()5. Dim ds As New DataSet()6.7. Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load8. '载⼊根节点表⾄treeview中,作为第⼀级9. myconnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;10. Data Source=" & Application.StartupPath & "\project.mdb"11. '数据库连接请⾃⾏更换12. mandText = "SELECT 根节点编号,根节点名称 FROM 根节点"13. mycommand.Connection = myconnection14. Try15. myconnection.Close()16. myconnection.Open()17. Dim mysqlreader As OleDb.OleDbDataReader = mycommand.ExecuteReader18. TreeView1.Nodes.Clear()19. While mysqlreader.Read()20. Dim tree_root As New TreeNode()21. tree_root.Tag = mysqlreader.GetString(0)22. '把编号放⼊tag中23. tree_root.Text = mysqlreader.GetString(1)24. '树上显⽰的是根节点名称25. '请根据你数据库字段的类型来决定是否⽤getstring或其它类型26. TreeView1.Nodes.Add(tree_root)27. End While28. Catch ex As Exception29. MessageBox.Show(ex.ToString, "数据表根节点载⼊错误", vbOKOnly)30. Finally31. myconnection.Close()32. End Try33. TreeView1.ExpandAll()34. TreeView1.Select()35. End Sub2.点击时加⼊⼦节点对TreeView的点击,对于TreeView控件本⾝,并没有为哪⼀个级别的 Node编写点击(选择)事件处理程序,⽽是把所有节点的点击事件都写⼊了⼀个AfterSelect事件中。
VB6_0中TreeView控件的使用
1引言TreeView控件用于显示具有层次结构的数据,是一个Nodes(结点)集合。
集合中的每个Node对象均由一个标签和一个可选的位图组成,结点的图像由ImageList控件提供。
在Delphi、VFP、VB等各种语言中,都提供了TreeView控件,用树型结构来显示数据库信息,便用户对繁杂信息的查询。
2属性设置2.1添加TreeView控件选择工程|部件,打开“部件”对话框。
查找并选择MicroSoftWindowsCommonControl6.0(oledb)后,自动在工具箱中添加一组控件,其中包括TreeView控件。
在窗体上添加一个TreeView和一个Imagelist控件。
在Im-agelist中添加图片,设置TreeView的“图像列表”属性为Imagelist。
2.2向Nodes集合中添加Node对象使用Add方法将一个Node对象添加到树中。
其中包括两个参数:relative和relationship,它们确定节点被添加到何处。
Rela-tive指定节点名称,Relationship指定新加入的节点与名为relative的节点之间的关系。
语法格式:TreeView.Nodes.addRelative,Relationship,key,text,image其中文本参数text是必须的,其他参数不是必须的。
例如:创建根结点,结点的key是“A1”,text是“机械系”。
语句为:TreeView1.Nodes.Add,,"A1","机械系"同样添加根结点电气系。
语句为:TreeView1.Nodes.Add,,"A2","电气系"为A1结点添加子结点,汽车10021、机制10031。
语句为:TreeView1.Nodes.Add"A1",tvwChild,"A11","汽车10021"TreeView1.Nodes.Add"A1",tvwChild,"A12","机制10031"3分层显示数据库信息3.1数据库设计通常数据库中的表之间具有一对多的关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vb TreeView 控件应用实例2009-11-14 20:52TreeView 控件应用实例:将 TreeView 绑定到 Biblio.mdb 数据库应用示例:DataTree.vbp本章的代码示例是从应用示例 DataTree.vbp which is listed in the Samples directory 中得到的。
可将数据库中的数据绑定到 TreeView 控件。
下面的示例将 TreeView 控件绑定到 Biblio 数据库,该数据库可以在 Visual Basic CD 中找到。
该应用实例将 Publishers 表作为树节点的第一层。
如果一个出版商对应于一个或多个书名,则这些书名将作为该出版商的子节点加入树中。
图 2.42 与数据绑定的 TreeVew 控件下面的代码用到了如下对象:Data Access Object Library(3.5)名为“frmDataTree”的 Form 对象名为“tvwDB”的 TreeView 控件名为“cmdLoad”的 CommandButton 控件将 Biblio.mdb 数据库绑定到 TreeView 控件在工程中添加对数据访问对象(DAO 3.0)的引用。
为 Database 和 Node 对象创建模块级的变量。
在 Form Load 事件中,用 OpenDatabase 语句将 Database 对象变量设置为 Biblio 数据库。
用 Nodes 集合的 Add 方法创建顶层的节点对象。
在 CommandButton 的 Click 事件中,创建两个 Recordset 变量,并将它们设置为Publishers 和 Titles 表。
用“Do Until”语句为表中的每个出版商创建一个 Node 对象。
对每个出版商,在 Titles 记录集中检查匹配的 PubID 字段;为每个匹配项添加一个子节点。
在工程中添加对数据访问对象(DAO 3.5)的引用要将数据库绑定到 TreeView 控件,必须先添加对当前版本的数据访问对象(DAO)的引用。
为 Database 对象和 Node 对象创建模块级的变量由于需要在一个会话中多次访问 Biblio.mdb 数据库,如果创建一个模块级的 Database 对象,保持一个打开数据库,将有助于提高效率。
此后,不需要打开数据库即可访问它。
在窗体的声明部分,键入如下内容:Private mDbBiblio As Database如果希望该数据库还可被其它模块使用,可以用 Public 语句,并重命名该变量,以表明它是全局的,例如 gDbBiblio。
在创建 Node 对象时,在 Set 语句中(如下所示)使用 Node 类型的变量。
Dim TempNode As NodeSet TempNode = tvwDB.Nodes.Add()虽然可以在添加 Node 对象时创建变量,更有效的方式是声明一个模块级的 Node 对象变量,并用它创建所有的 Node 对象。
在上述声明部分再键入:Private mNode As Node用 OpenDatabase 语句将 Database 对象变量设置为 Biblio 数据库Form 对象的 Load 事件中可以初始化 Database 变量。
代码如下:Set mDbBiblio = DBEngine.OpenDatabase("BIBLIO.MDB")在成功地初始化 Database 对象变量后,就可以在该模块的代码中的任何位置自由地访问它了。
Form Load 事件:用 Nodes 集合的 Add 方法创建顶层的 Node 对象至此,Database 对象变量已经被初始化为 Biblio 数据库,现在可以创建树中的第一个节点,并将打开的数据库的名称赋予它。
首先必须用 Node 集合的 Add 方法创建第一个 Node 对象。
还要使用 Set 语句将其赋给 mNode 对象变量,如下所示:Set mNode = tvwDB.Nodes.Add() ' 创建第一个节点。
mNode.Text = 注意,在上面的代码中,在创建 Node 的同时用 Set 语句将其赋给了 mNode 对象变量。
由于 mNode 变量现在包含了新创建的 Node 对象,可以对该 Node 对象的属性进行赋值。
在上述情况下,Database 的名称(即 Database 对象的 Name 属性)已经被赋给了新节点的Text 属性。
CommandButton Click 事件:创建两个 Recordset 变量,并将它们分别设置为 Publishers 和 Titles 表本应用实例假定存在名为“cmdLoad”的按钮,并且当用户单击它时,置入 Biblio 数据库中的两个表到 TreeView 控件中。
为此,必须首先在该按钮的 Click 事件中声明两个 DAO 对象变量。
第一个变量 rsPublishers 用来包含 Publishers 表。
第二个变量 rsTitles 用来包含 Titles 表。
下面的代码声明了这两个变量,并用 OpenRecordSet 方法将表赋给变量:Dim rsPublishers As RecordsetDim rsTitles As RecordsetSet rsPublishers = mDbBiblio. _OpenRecordset("Publishers", dbOpenDynaset)Set rsTitles = mDbBiblio. _OpenRecordset("titles", dbOpenDynaset)用 Do Until 语句为表中的每个出版商创建一个 Node 对象现在有两个打开的记录集,可以遍历每个记录集,创建 Node 对象,并为该对象的 Text 属性赋予合适的值。
首先,必须遍历 Publishers 表,并为该表中的每个出版商创建一个 Node 对象。
下列简化了的代码可以用一句话概括为,“逐个处理每个记录,直到记录集的末尾:创建Node 变量,并将 Title 字段的值赋给其 Text 属性,移到下一记录并重复”:Do Until rsPublishers.EOFSet mNode = tvwDB.Nodes.Add(1, tvwChild)mNode.Text = rsPublishers!NamersPublishers.MoveNextLoop注意,在上面的 Add 方法中用了两个参数。
第一个参数(1)是我们希望添加入节点的 Node 的 Index 属性。
也就是说,希望所有的出版商节点成为第一个(根)节点(在 Form 的 Load 事件中创建的)的子节点。
第二个参数使用了常数 (tvwChild),该常数指定新的 Node 将成为编号为“1”的 Node 的子节点。
对每个出版商,在 Titles 记录集中检查匹配的 PubID 字段;为每个匹配项添加一个子节点上面的代码将 Publishers 表的内容作为第一层填入 TreeView 中。
然而,我们还希望能够进入更深一层,为每个出版商节点增加子节点。
每个子节点代表该出版商印刷的一本书。
为了做到这一点,如果有了对新创建的出版商节点 (mNode) 的引用,只要遍历 Titles 记录集,并检查每条记录的 PubID 字段即可。
如果该字段与 Publishers 记录集中的 PubID 字段相匹配,则该书是由当前的出版商出版的。
但是,在能够为 mNode 添加节点之前,还必须先将 mNode 的 Index 属性赋给一个变量 (intIndex),如下所示:intIndex = mNode.Index然后就可以在 Add 方法中使用该变量了,Add 方法需要用来加入子节点的 Node 对象的Index 属性:Set mNode = tvwDB.Nodes.Add(intIndex, tvwChild)如下简化的代码可被表述为“直到 Recordset 的结尾:创建子 Node 对象,并将 Title 字段的值赋给它的 Text 属性;移动到下一记录并重复上述操作”:Do Until rsTitles.EOFIf rsPublishers!PubID = rsTitles!PubID ThenSet mNode = tvwDB.Nodes.Add(intIndex, tvwChild)mNode.Text = rsTitles!Title 'Text 属性。
End IfLoop完成代码上面的代码显示了用两个相关的表填成一个表的基本策略。
全部代码如下:'必须设置对 DAO 3.5 的引用。
'在声明部分,声明模块级的对象变量:Private mDbBiblio As DatabasePrivate mNode As NodePrivate Sub Form_Load()'在 Form_Load 事件中,设置对象变量,'并创建 TreeView 控件的第一个 Node 对象。
Set mDbBiblio = DBEngine.Workspaces(0). _OpenDatabase("BIBLIO.MDB")tvwDB.Sorted = TrueSet mNode = tvwDB.Nodes.Add()mNode.Text = "Publishers"mNode.Tag = '设置 Tag 属性。
mNode.Image = "closed" '设置 Image'属性End SubPrivate Sub cmdLoad_Click()'声明 DAO 对象变量,'并将记录集赋予它们。
Dim rsPublishers As RecordsetDim rsTitles As RecordsetSet rsPublishers = mDbBiblio. _OpenRecordset("Publishers", dbOpenDynaset)Set rsTitles = mDbBiblio. _OpenRecordset("titles", dbOpenDynaset)'移到第一条记录。
rsPublishers.MoveFirstDim intIndex As Integer '用于索引的变量。
'直到最后一条记录 (EOF):添加一个 Node 对象,'并用 Name 字段作为新'Node 对象的文本。