TreeView控件使用教程.doc_第1页
TreeView控件使用教程.doc_第2页
TreeView控件使用教程.doc_第3页
TreeView控件使用教程.doc_第4页
TreeView控件使用教程.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TreeView控件使用教程11. TreeView 控件 TreeView 控件显示 Node 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。语法Treeview说明创建了 TreeView 控件之后,可以通过设置属性与调用方法对各 Node 对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。Collapse、Expand 和 NodeClick 三个事件也提供编程功能。Node 对象使用 Root、Parent、Child、FirstSibling、Next、Previous 和 LastSibling 属性。在代码中可通过检索对 Node 对象的引用,从而在树上定位。也可以使用键盘定位。UP ARROW 键和 DOWN ARROW 键向下循环穿过所有展开的 Node 对象。从左到右、从上到下地选择 Node 对象。若在树的底部,选择便跳回树的顶部,必要时滚动窗口。RIGHT ARROW 键和 LEFT ARROW 键也穿过所有展开的 Node 对象,但是如果选择了未展开的 Node之后再按 RIGHT ARROW 键,该 Node 便展开;第二次按该键,选择将移向下一个 Node。相反,若扩展的 Node 有焦点,这时再按 LEFT ARROW 键,该 Node 便折回。如果按下 ANSI 字符集 中的键,焦点将跳转至以那个字母开头的最近的 Node。后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。控件的外观有八种可用的替换样式,它们是文本、位图、直线和 +/- 号的组合,Node 对象可以任一种组合出现。TreeView 控件使用由 ImageList 属性指定的 ImageList 控件,来存储显示于 Node 对象的位图和图标。任何时刻,TreeView 控件只能使用一个 ImageList。这意味着,当 TreeView 控件的 Style 属性被设置成显示图像的样式时,TreeView 控件中每一项的旁边都有一个同样大小的图像。发行注意 TreeView 控件是 MSCOMCTL.OCX 文件中的一组 ActiveX 控件的一部分。为了在应用程序中使用 TreeView 控件,必须将 MSCOMCTL.OCX 文件2. Sorted 属性(TreeView 控件) 返回或设置一值,此值确定 Node 对象的子节点是否按字母顺序排列。返回或设置一值,此值确定 TreeView 控件的根层节点是否按字母顺序排列。 语法object.Sorted = booleanSorted 属性语法包含下面部分:部分 描述 object 对象表达式,其值是“应用于”列表中的一个对象。 boolean 布尔表达式,表示 Node 对象是否已被排序如“设置值”中描述。 设置值boolean 的设置值是:设置值 描述 True Node 对象根据它们的 Text 属性按字母顺序排列。其 Text 属性由数字开始的 Node 对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。 False Node 对象不排序。 说明Sorted 属性有两种用法,第一,在 TreeView 控件的根(顶)层排列 Node 对象,第二,对任何单个 Node 对象的立即子节点排序。例如,下面的代码是对 TreeView 控件的根节点排序: TreeView控件使用教程23. EnsureVisible 方法 这个方法确保指定的 ListItem 或 Node 对象是可视的。如果需要,这个方法可展开 Node 对象并滚动 TreeView 控件。该方法仅可滚动 ListView 控件。语法object.EnsureVisibleobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。返回值值 描述 True 如果 ListView 或 TreeView 控件必须滚动与/或扩展以显露该对象,该方法返回 True。 False 如果不需滚动与/或展开,该方法返回 False。 说明一个特定的 Node 或 ListItem 对象可能深藏于 TreeView 或 ListView 控件中,当要使其为可视时,使用 EnsureVisible 方法。如果 Scroll 属性设置为 False,则该方法将不会在 TreeView 控件上起作用。4. Node 对象和 Nodes 集合Node 对象是 TreeView 控件中的一项,它包含图像和文本。Nodes 集合包含一个或多个 Node 对象。 语法treeview.Nodestreeview.Nodes.Item(index)以上语法行,按照标准集合语法分别引用集合与集合中的单独元素。treeview 对象表达式,其值是 TreeView 控件。 index 整数或字符串,它唯一地标识 Nodes 集合的一个成员。整数是 Index 属性的值,字符串是 Key 属性的值。 说明节点可包含文本和图片。然而,要使用图片,必须用 ImageList 属性关联一个 ImageList 控件。图片可以根据节点的状态而改变;例如,如果将 SelectedImage 属性设置为来自关联的 ImageList 的图像,则被选中的节点可拥有与未选中的节点不同的图片。5. Add 方法(Nodes 集合) 在 Treeview 控件的 Nodes 集合中添加一个 Node 对象。语法object.Add(relative, relationship, key, text, image, selectedimage)Add 方法的语法包含下面部分:描述 object 必需的。对象表达式,其值是“应用于”列表中的一个对象 relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。 relationship 可选的。指定的 Node 对象的相对位置,如设置值中所述。 key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。 text 必需的。在 Node 中出现的字符串。 image 可选的。在关联的 ImageList 控件中的图像的索引。 selectedimage 可选的。在关联的 ImageList 控件中的图像的索引,在 Node 被选中时显示。 设置值relationship 的设置值是:TreeView控件使用教程36. Root 属性(Node 对象) 返回对所选 Node 的根 Node 对象的引用。语法object.Rootobject 所在处代表是对象表达式,其值是“应用于”列表中的对象说明Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 各属性全将返回对另一个 Node 对象的引用。因此,可以同时引用并执行对 Node 的操作,如下所示:With TreeView1.Nodes(x).Root.Text = New text.Key = New key.SelectedImage = 3End With也可以将对象变量设置为被引用的 Node,如下所示:Dim NodRoot As Node得到对节点 x 的根的引用。Set NodRoot = TreeView1.Nodes(x).Root用此引用执行对根节点的操作。With nodRoot.Text = New text 改变文本。.Key = New key 改变键。.SelectedImage = 3 改变 SelectedIma7. Parent 属性(Node 对象) 这个属性返回或设置 Node 对象的父对象。仅在运行时可用。语法object.Parent = nodeParent 属性的语法包含下面部分:部分 描述 object 对象表达式,其值是“应用于”列表中的一个对象。 node 变成该对象的父对象的 Node 对象。 说明在运行时,设置这个属性为一个对象的操作不能搞成一个循环,否则便发生错误。例如,不能将任何 Node 设置成为其后代的子 Node。Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:With TreeView1.Nodes(x).Parent.Text = New text.Key = New key.SelectedImage = 3End With也可以将对象变量设置为引用的 Node,如下所示:Dim NodParent As NodePrivate Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)如果用户没移动鼠标,或在无效区释放它。If TreeView1.DropHighlight Is Nothing Thenindrag = FalseExit SubElse设置被拖动的节点的 parent 属性为目标节点。On Error GoTo checkerror 阻止循环错误。Set nodX.Parent = TreeView1.DropHighlightClsPrint TreeView1.DropHighlight.Text & _ is parent of & nodX.Text释放 DropHighlight 引用。Set TreeView1.DropHighlight = Nothingindrag = FalseExit Sub 如未发生错误则退出。End Ifcheckerror:定义表示 Visual Basic 错误代码的常数。Const CircularError = 35614If Err.Number = CircularError ThenDim msg As Stringmsg = A node cant be made a child of its own children.显示带有一个感叹号图标和“确定”与“取消”按钮的消息框。If MsgBox(msg, vbExclamation & vbOKCancel) = vbOK Then释放9. Children 属性 这个属性返回包含在 Node 对象中的各子 Node 对象的个数。语法object.Childrenobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。说明在执行一个影响子节点的操作之前,可用 Children 属性检查 Node 对象是否有子节点。例如,以下代码在检索第一个 Node 的 Text 属性之前,使用 Child 属性检查子节点的存在。Private Sub TreeView1_NodeClick(ByVal Node As Node)If Node.Children 0 ThenMsgBox Node.Child.TextEnd IfEnd SubChildren 属性示例这个例子在 TreeView 控件中放置几个 Node 对象。这组代码检查 Node 是否有子节点。如果有,则显示子节点的文本。为试用此例,在窗体上安放一个 TreeView 控件,并在窗体的声明部分中粘贴下面的代码。运行此例,单击 Node 对象以选择它,然后单击该窗体来察看 Node 对象的子节点的文本。Option ExplicitPrivate Sub Form_Click()Dim strC As String Dim N As IntegerIf TreeView1.SelectedItem.Children 0 Then 有子节点。10. FirstSibling 属性(Node 对象)这个属性返回对 TreeView 控件中的 Node 对象的第一个相邻对象的引用。语法object.FirstSiblingobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象说明第一个相邻节点是出现在一个节点层中第一个位置上的 Node。实际上到底是哪一个 Node 出现在第一个位置取决于在那一层上的 Node 对象是否被排序,这由 Sorted 属性确定。Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:With TreeView1.Nodes(x).FirstSibling.Text = New text.Key = New key.SelectedImage = 3End With也可以将对象变量设置为引用的 Node,如下所示:Dim NodFirstSib As Node获取 Node x 的第一个相邻节点的引用。Set NodFirstSib = TreeView1.Nodes(x).FirstSibling使用这个引用执行对第一个相邻 Node 的操TreeView控件使用教程411. LastSibling 属性(Node 对象)这个属性返回对 TreeView 控件中的 Node 对象的最后相邻节点的引用。语法object.LastSiblingobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。说明最后的相邻节点是出现在一个节点层中最后位置上的 Node。实际上哪个 Node 出现在最后位置上取决于在那一层上的 Node 是否被排序,这由 Sorted 属性所确定。为了排序同一层上的 Node 对象,应把 Parent 节点的 Sorted 属性设置为 True。请参阅下面的代码:Private Sub TreeView1_NodeClick(ByVal Node As Node)Node.Parent.Sorted = TrueEnd SubChild、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性均返回对另一个 Node 对象的引用。所以,可以同时引用并执行对一个 Node 的操作,如下所示:With TreeView1.Nodes(x).LastSibling.Text = New text.Key = New key.SelectedImage = 3End With也可以将对象变量设置为引用的 Node,如下所示:12. Previous 属性(Node 对象) 返回对 Node 对象的前一个相邻节点的引用。语法object. Previousobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。说明Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性全部返回对另一个 Node 对象的引用,因此,可以同时引用并执行对 Node 的操作,如下所示:With TreeView1.Nodes(x).Previous.Text = New text.Key = New key.SelectedImage = 3End With也可以将对象变量设置为引用的 Node,如下所示:Dim NodPrevious As Node获得对节点 x 的前一个相邻节点的引用。Set NodChild = TreeView1.Nodes(x).Previous用此引用执行对前一个相邻节点的操作。With nodPrevious.Text = New text 改变文本。.Key = New key 改变键。.SelectedImage = 3 改变13. Next 属性(Node 对象)这个属性返回对 TreeView 控件的 Node 对象的下一个相邻 Node 的引用。语法object.Nextobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。说明Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性均返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:With TreeView1.Nodes(x).Child.Text = New text.Key = New key.SelectedImage = 3End With也可以将对象变量设置为引用的 Node,如下:Dim NodChild As Node获得对节点 x 的子节点的引用。Set NodChild = TreeView1.Nodes(x).Child使用这个引用来执行对子节点的操作。With nodChild.Text = New text 改变文本。.Key = New key 改变键。.SelectedImage = 3 改变TreeView控件使用教程514. FullPath 属性 这个属性返回在 TreeView 控件中引用的 Node 对象的完整限定路径。当赋予该属性为字符串变量时,该字符串被设为具有指定索引的 FullPath 节点。语法object.FullPathobject 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。说明完整限定路径是引用的 Node 对象的 Text 属性中的文本与它的所有前辈的 Text 属性值的连接。PathSeparator 属性的值确定定界符。FullPath 属性示例这个例子为 TreeView 控件添加几个 Node 对象,并在每个对象被选中时显示其完整限定路径。为试用此例,要在窗体上安放一个 TreeView 控件并在窗体的声明部分粘贴该代码。运行此例,然后选择一个节点,单击窗体显示该 Node 对象的完整路径。Private Sub Form_Load()Dim nodX As NodeSet nodX = TreeView1.Nodes.Add(,Root)Set nodX = TreeView1.Nodes.Add(1,tvwChild,Dir1)Set nodX = TreeView1.Nodes.Add(2,tvwChild,Dir2)Set nodX = TreeView1.Nodes.Add(3,tvwChild,Dir3)Set nodX = TreeView1.Nodes.Add(4,tvwChild,Dir4)nodX.EnsureVisible 显示全部节点。TreeView1.Style = tvwTreelinesText 样式 4。End Sub15. Selected 属性(ActiveX 控件)返回或设置确定一个对象是否被选中的值。对于 ListItem 对象,Selected 属性不设置 SelectedItem 属性,这样就不会使对象被选中。它仅返回一值,表明是否已用其它方法选中了 ListItem 对象。语法object.Selected = booleanSelected 属性语法包含下面部分:部分 描述 object 对象表达式,其值是“应用于”列表中的一个对象。 boolean 布尔表达式,指明对象是否已被选中。 说明用 Selected 属性编程选择指定的 Node 或 Tab 对象。一旦用此法选定了对象,就可对此对象执行各种操作,如设置各种属性及调用各种方法。为选择指定的 Node 对象,必须通过它的 Index 属性或 Key 属性的值去引用它。下面的例子是在 TreeView 控件中选择指定的 Node 对象:Private Sub Command1_Click()TreeView1.Nodes(3).Selected = True 选择对象。用 SelectedItem 属性得到对该对象的引用。TreeView1.SelectedItem.Text = Changed TextEnd Sub在 ListView 控件中,SelectedItem 属性总是引用第一个选中的项,因此,如多个项被选中,必须遍历所有选中16. SelectedImage 属性 返回或设置在相关的 ImageList 控件中的 ListImage 对象的索引值或键值;当 Node 对象被选中时显示 ListImage。语法object.SelectedImage = indexSelectedImage 属性语法包含下面部分:部分 描述 object 对象表达式,其值是“应用于”列表中的一个对象。 index 整数或唯一字符串,标识在相关的 ImageList 控件中的 ListImage 对象。整数是 ListImage 对象的 Index 属性的值;字符串是 Key 属性的值。 说明如果这个属性置为 Null,则使用由 Image 属性指定的缺省图形的屏蔽。17. Expanded 属性 这个属性返回或设置一个值,该值确定在 TreeView 控件中的 Node 对象当前是被展开的还是被折叠的。语法object.Expanded= booleanExpanded 属性的语法包含下面部分:部分 描述 object 对象表达式,其值是“应用于”列表中的一个对象。 booleaOrdinalPosition属性示例OrdinalPosition 属性示例 (MDB) 以下示例更改了“产品”表中第一个字段的 OrdinalPosition 属性设置。如果在执行这个示例之前和之后检查“数据表视图”中的这个表,那么将会看到该过程将“产品ID”字段从第一列移到最后一列。 Sub SetPosition() Dim dbs As Database, tdf As TableDef Dim fldFirst As Field, fld As Field 返回对当前数据库的引用。 Set dbs = CurrentDb 返回对 Products 表的引用。 Set tdf = dbs.TableDefs!Products 返回对表中第一个字段的引用。 Set fldFirst = tdf.Fields(0) 将 OrdinalPosition 属性设置到集合的最后位置。 fldFirst.OrdinalPosition = tdf.Fields.Count 刷新 Fields 集合。 tdf.Fields.Refresh 列举所有字段并打印顺序位置。 For Each fld In tdf.Fields Debug.Print fld.Name, fld.OrdinalPosition Next fld Set dbs = Nothing End Sub treeview使用方法介绍专题地址:/index.asp?board=4&recordid=75FABE1E16DC建立一个窗体,在窗体上放置如下控件:Treeview控件:名称Treeview1;Imagelist控件:名称Imagelist1,并在该控件中放置三张个性图片(3232),建立索引1、2、3;(方法:在Imagelist控件上单击鼠标右键选择属性)Label控件:名称分别为Lab(0)、Lab(1),Caption分别为“父节点:”、“子节点:”;Textbox控件:名称分别为Txt(0)、Txt(1),text都为“”;commandbutton控件:名称为系统默认,Caption分别为“添加”、“展开”、“收起”、“排序”、“删除”、“退出”;将下列代码加入到代码框:OptionExplicit DimIAsIntegerDimJAsIntegerDimnodxAsNodeDimCunZaiAsBoolean定义变量PrivateSubCommand1_Click()IfTxt(0).TextAndTxt(1).TextThen不允许建立零字节的父节点和子节点CunZai=FalseJ=TreeView1.Nodes.CountForI=1ToTreeView1.Nodes.Count检查新输入的父节点名称是否存在IfTreeView1.SelectedItem.Children0ThenIfTxt(0).Text=TreeView1.Nodes(I).TextThenCunZai=TrueEndIfNextIIfCunZai=TrueThen若存在,则在父节点下建立子节点Setnodx=TreeView1.Nodes.Add(Txt(0).Text,tvwChild,child&J,Txt(1).Text,3)Else,若不存在,则建立父节点和子节点Setnodx=TreeView1.Nodes.Add(,Txt(0).Text,Txt(0).Text,1)Setnodx=TreeView1.Nodes.Add(Txt(0).Text,tvwChild,child&J,_Txt(1).Text,3)EndIfTreeView1.RefreshElseIfTxt(0).Text=ThenMsgBox请输入父节点名称!,vbInformation,警告!系统提示ElseIfTxt(1).Text=ThenMsgBox请输入子节点名称!,vbInformation,警告!EndIfEndSubPrivateSubCommand2_Click()ForI=1ToTreeView1.Nodes.CountTreeView1.Nodes(I).Expanded=True展开所有节点NextIEndSubPrivateSubCommand3_Click()ForI=1ToTreeView1.Nodes.CountTreeView1.Nodes(I).Expanded=False收起所有节点NextIEndSubPrivateSubCommand4_Click()TreeView1.Sorted=True排列顺序EndSubPrivateSubCommand5_Click()IfTreeView1.SelectedItem.Index1ThenTreeView1.Nodes.RemoveTreeView1.SelectedItem.Index删除选定的节点EndIfEndSubPrivateSubCommand6_Click()End退出程序EndSubPrivateSubForm_Load()TreeView1.LineStyle=TvwTreeLines在兄弟节点和父节点之间显示线TreeView1.ImageList=ImageList1链接图像列TreeView1.Style=tvwTreelinesPlusMinusPictureText树状外观包含全部元素Setnodx=TreeView1.Nodes.Add(,蒲子明,蒲子明,1)建立名称为蒲子明的父节点,选择索引为1的图像Setnodx=TreeView1.Nodes.Add(蒲子明,tvwChild,child01,收件箱,3)在蒲子明父节点下建立收件箱子节点,选择索引为3的图像Setnodx=TreeView1.Nodes.Add(蒲子明,tvwChild,child02,发件箱,3)在蒲子明父节点下建立发件箱子节点,选择索引为3的图像CunZai=FalseEndSubPrivateSubTreeView1_Expand(ByValNodeAsMSComctlLib.Node)Node.ExpandedImage=2节点被展开时,选择索引为2的图像EndSubPrivateSubTreeView1_NodeClick(ByValNodeAsMSComctlLib.Node)IfTreeView1.SelectedItem.Children=0Then检查是否有子节点,0为无ForI=1ToTreeView1.Nodes.CountIfTreeView1.Nodes(I).SelectedThenMsgBox您选择的是:“&TreeView1.Nodes(I).FullPath&”子节点!系统提示EndIfNextIEndIfEndSub图片如下:关于treeview控件的研究心得1、关于checked属性checked属性就是在每个列项前面出现一个方框可以通过打勾来表明是否选中。其使用语法是:Node.CheckedAsBoolean或者TreeView.Nodes.CheckedAsBoolean如果你在控件工具箱找不到treeview控件,那么请点击“工具”菜单下的“附件控件”。这里要特别强调的一点是,treeview控件一共有2个版本,请选择6.0版。否则没有checked属性如果要打开checked属性,可以在代码中加一行TreeView1.CheckBoxes=True。或者直接在treeview属性窗中修改checked属性为true。否则看不到方框。如果你要根据某个node的checked值改变另一些node的checked值,比如选取一次父节点就自动选取全部子节点的checked,那么你应在TreeView_NodeCheck事件中放置代码,而不是TreeView_NodeClick。如果在TreeView_NodeClick写,同样可以实现,但是你必须在改变checked方框后再次点击node以便再一次引发NodeClick事件,这样才能看到刷新后的情况。而在NodeCheck中就完全没有问题。2、关于读取node信息获取node信息的参数有很多,包括:index、key、text这里我个人认为用index和text就足够了,key虽然看起来是一个为了循环考虑的量,可以供item方法使用,但是请注意,key是一个字符串,而不是整数!我想不出来我有什么必要设定一个命名规则然后再不厌其烦地把字符串转化为整数。而index属性正好可以帮我们解决这个困难。首先解释一下,不论一个treeview里的node分了多少级的深度,index都是从最上往最下游历树,返回所有node的总数。也许有人会说那我怎么知道在进入某一级后如何依靠index而不是key来循环?很简单,我们还有几个工具配合index:Node.ChildrenAsInteger返回当前node的子节点的数目Node.ParentAsNode返回当前节点的父节点信息强烈提醒注意的是,Children是一个数值,可以直接进入循环,而Parent是一个对象,直接引用Node.Parent得到的是上一层节点的key。只有用Node.Parent.Index才能获得上一层节点的index值。全部的node数量可以用TreeView.Nodes.Count属性获得。初始第一个node的index值是1而不是0!习惯了数组下标用0开始的要注意。下面这段代码是我基于上面两方面的经验写出来的,目的在于当一个父节点的checked被确定时,其下所有子节点都自动被修改为与父节点一致。PrivateSubTreeView1_NodeCheck(ByValNodeAsMSComctlLib.Node)a=Node.Indexb=Node.CheckedIfa=1Then如果是第一个节点那么游历整个树Fori=0ToTreeView1.Nodes.Count-1TreeView1.Nodes(i+a).Checked=bNextiElseFori=1ToNode.Children否则游历当前节点所有下属节点TreeView1.Nodes(i+a).Checked=bNextiEndIfEndSub有人可能要问,为什么要区别当前节点是否是根节点?原因是节点与节点之间之有父与子两层关系,无法直接获取孙以及更低层节点信息。而index的序列又是不区分节点深度的。因此,如果不判断当前节点是否是根节点,只要任何一个子节点下有一个孙节点,这段代码就无法达到足够的循环次数,从而无法覆盖全部任何深度的节点。比如根节点下有2个子节点,每个子节点有2个孙节点,那么不加判断的循环结果就是程序运行到第一个子节点下的第一个孙节点就结束因为Node.Children告诉我们只有2个子节点,循环的时候第一个子节点算一个,按照index的顺序,其下的第一个孙节点就是第2个,循环从而结束。 树视TreeView的使用技巧1、为树状浏览器控件添加节点和子节点 用ADD方法添加一个新节点到树状浏览器的NODES集合时,可以声明它是和已存在的节点所联系起来的。通常使用ADD方法,其语法如下: Nodes.Add(relative,relationship,key,text,image,selectedimage) 各个参数的意义如下:relationship 参数是通过关系节点参数与新节点连接的另一个节点;relationship 参数可能是以下情况: tvwlast-1;该节点置于所有其他的在relative中被命名的同一级别的节点的后面 tvwNext-2;该节点置于在relative中被命名节点的后面 tvwPrevius-3;该节点置于在relative中被命名的节点的前面 tvwChild-4;该节点成为在relative中被命名的节点的的子节点 下面是一个例子:Dim node1,node2,node3,node4 as Node set Node1=TreeView1.Nodes.Add TreeView1.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.text end sub Access下如何使用通用对话框很多用ACCEE97开发过数据库的用户都有这种体会:要想在窗体中添加一个命令按钮实现打开通用对话框的功能真是很困难。因为access97本身并未提供这类控件,所以必须通过编写有关的宏才能实现该功能,但是编写出的宏限制很多,比如:在选择文件类型时不能同时存在多种文件格式,必须预定义好某一种格式等等。 最近笔者在开发INTRANET信息采集系统时偶得一控件,恰恰能完成打开通用对话框的功能,并且效果极佳,不敢独享,拿来与诸君共享之。因为该控件存放于VB6中,所以具体使用方法和在VB中类似。其他控件 Microsoft Common Dialog Control,Version 6.0 在窗体上形成对话框控件 修改控件的名称如:Dialog1 设置其属性:在对话框上单击右键 CommonDialog 对象的属性弹出属性对话框(如下图)。可以看到,属性页的内容包括“打开/另存为”、“颜色”、“字体”、“打印”和“帮助”五组选项。可以根据提示在属性页中直接进行属性设置,也可通过编程来设置这些属性。 下面分别对各组选项加以说明:A、“打开/另存为”:对话框标题是“打开/另存为”窗体的标题,如打开文件时可输入“打开文件”,另存文件时可输入“保存文件”。文件名称是要打开/另存文件的默认值,一般打开/另存时此处为空。初始化路径是打开/另存文件的默认路径,一般为空。过滤器是用来在“打开/另存为”处理中,通过对该属性的设置来控制文件的类型。其设置方法为access文件|*.mdb|文本文件|*.txt|所有文件|*.*B、颜色C、字体D、打印E、帮助过滤器属性的设置方法:Dialog1.filter = “access文件|*.mdb|文本文件|*.txt|所有文件|*.*”通过FileName属性获取选定的文件名。常用对话框控件属性及方法表属性 说明Copies 要打印的份数FromPage 打印的起始页ToPage 打印的结束页Hdc 选定打印机的设备上下文方法 说明ShowOpen 打开ShowSave 另存为ShowColor 颜色ShowFont 字体ShowPrinter 打印ShowHelp 调用Windows “帮助”例:打开文件对话框的命令如下:dim filename1 As StringDialog1.showopen 显示打开文件对话框Filename1= Dialog1.filename 获取所选择的文件名例:打开保存文件对话框的命令如下:dim filename1 As StringDialog1.showsave 显示保存文件对话框Filename1=Dialog1.filename 获取所选择的文件名其它几种对话框的打开方式与上面的方法相同,值得一提的是可以通过该控件控制打印机的使用,非常方便。以上就是Microsoft Common Dialog Control,Version 6.0控件的具体使用方法,希望对读者有一定帮助。一个快速注册DLL及OCX的方法有时候我们在 VB 中要引用某一个 DLL 或 OCX 时,会出现文件未注册的讯息,这时,我们可以使用人工注册的方法,也就是直接在命令列中使用 regsvr32.exe 来做,做法如下: 文件注册:C:WindowsSystemRegsvr32.exe C:WindowsSystemTest.ocx取消注册:C:WindowsSystemRegsvr32.exe /u C:WindowsSystemTest.ocx这些动作我们也可以直接写到程序中,使用 Shell 来执行,但是我现在要说的,都不是上面提到的方法!注意看罗!方法如下:1、在资源管理器中找到 C:WindowsSystemRegsvr32.ex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论