TreeView属性
- 格式:doc
- 大小:39.50 KB
- 文档页数:2
VFP TreeView控件使用详解vfptreeview控件使用详解vfptreeview控件使用详解(2)这个控件的使用率也就是很高的,所以我们就必须好好掌控一下了。
在梅子这儿存有一个treeview控件的“畅享系列”。
较好!我也就是把她里面的一些精华封盖下来,给大家太少作表明而已。
如果你想要系统的学一下呢,就之下一个“畅享系列”吧!简单的介绍:treeview控件用以显示信息的分级视图,如同windows里的资源管理器的目录。
treeview控件中的各项信息都存有一个与之有关的node对象。
treeview表明node对象的分层目录结构,每个node对象均由一个label对象和其有关的图形共同组成。
在创建treeview控件后,我们可以进行和卷曲、表明或暗藏其中的节点。
treeview控件通常用以显示文件和目录结构、文档中的类层次、索引中的层次和其他具备分层目录结构的信息。
treeview控件有3个属性页,general页、font页、picture页。
treeview控件属性1。
linestyle属性该属性设置本项控件中node对象之间表明的线条类型。
格式:表单.treeview名.linestyle=值值的范围:0-tvwtreelines(缺省)三线显示兄弟节点和父子节点之间的连线1-tvwrootlines根(root)线。
除了上述的连线以外,还表明根目录之间的连线需要注意的是:在设置该属性前,必须设置style属性为treeline(三线)。
2。
style属性该属性返回和设置表现在treeview控件对象中node对象的图形类型和文本类型。
格式:表单.treeview名.style=值值的范围:0-tvwtextonly文本1-tvwpicturetext图象和文本2-tvwplusminustext+/-以及文本3-tvwpluspicturetext+/-、图象以及文本4-tvwtreelinestext连线和文本5-tvwtreelinespicturetext连线、图象和文本6-tvwtreelinesplusminuetext连线、+/-和文本7-tvwtreelinesplusminuspicturetext(缺省)连线、+/-、图象和文本3。
TreeView由节点构成,建树通过对TreeView.items属性进行操作。
Items是一个TTreeNodes对象,这是一个TTreeNode集。
一、针对TTreeNodes,也就是 TreeView.Items,有这些属性:1、count,节点个数。
2、item[index] ,通过index得到节点。
二、针对TTreeNodes,也就是 TreeView.Items,常用的添加节点的操作有:AddFirst添加第一个根节点。
由此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。
该函数返回新添加的节点。
AddChildFirst添加第一个子节点,要求有父节点作为其参数。
返回新添加的节点。
AddChild添加一个子节点,要求有父节点作为其参数。
返回新添加的节点。
Add添加一个兄弟节点,要求有兄弟节点作为其参数。
返回新添加的节点。
三、针对TTreeNodes,也就是 TreeView.Items,常用的得到节点的操作有:GetFirstNode() 得到根节点。
然后配合TTreeNode.GetNext(),就可以访问所有的节点。
四、建树举例:varroot_node,cur_node:TTreeNode;beginroot_node:=AddFirst(nil,'根节点1');cur_node:=addChildfirst(root_node,nil,'根节点1_child1');add(cur_node,'根节点1_child2');root_node:=Add(nil,'根节点2');AddChildFirst(root_node,''根节点2_child1');end;五、事件触发:当从一个节点跳到另一个节点,会触发TTreeView.OnChange事件。
该事件中,将传递node,即当前被选中的节点。
TreeView 控件的呈现是可完全自定义的,这使得可以使用多种多样的显示样式。
若要自定义TreeView 控件的外观,可以执行以下操作:·指定影响控件显示和呈现的TreeView 控件属性。
·指定一个ImageSet 属性,该属性选择一组在运行时同控件一起呈现的内置图像。
·指定用于控制TreeView 控件内特定TreeNode 对象组的显示及呈现特性的各图像和样式属性。
·使用Visual Studio 的自动套用格式功能可迅速完成一组图像和样式属性的自定义。
·为应用程序中的TreeView 控件指定一个预定义主题或一个定义运行时显示及呈现特性的外观。
一、顶级布局属性除了服务器控件的标准属性(如BackColor 属性)外,TreeView 控件还公开一组提供对TreeView 控件的外观进行精确控制的属性。
1.1、NodeIndent 属性NodeIndent 属性指定了所有节点的缩进量级。
节点会从呈现TreeView 控件的一侧缩进。
对于从左向右呈现的区域设置而言,这是指左侧,而对于从右向左呈现的区域设置而言,这是指右侧。
1.2、NodeWrap 属性NodeWrap 属性指定每个节点中显示的文本在空间不足时是换到下一行的开头还是在同一行中继续显示。
1.3、ShowLines 属性ShowLines 属性指定是否显示将子节点连接到父节点的连线。
当此属性设置为true 时,TreeView 控件将在LineImagesFolder 属性指定、可从Web 访问的文件夹中搜索连线图像。
二、TreeNodeStyle 属性除了自身的属性外,TreeView 控件还支持每种节点类型的TreeNodeStyle 控件的属性。
这些样式属性将重写应用于所有节点类型的NodeStyle 属性。
TreeView 控件还具有一个为所有节点指定缩进量级的NodeIndent 属性。
tkinter中treeview用法tkinter是一个常用的Python图形用户界面(GUI)库,它提供了一组用于创建和管理窗口、组件和控件的功能。
其中,treeview是tkinter中一个常用的控件,用于显示数据的多层次结构。
treeview的基本用法如下:1. 导入必要的模块和库:```from tkinter import *from tkinter.ttk import Treeview```2. 创建主窗口:```root = Tk()root.title("TreeView Example")```3. 创建treeview对象:```tree = Treeview(root)tree.pack()```4. 定义treeview的列和列名:```tree["columns"] = ("column1", "column2", "column3")tree.heading("column1", text="Column 1")tree.heading("column2", text="Column 2")tree.heading("column3", text="Column 3")```5. 添加数据到treeview中:```tree.insert(parent="", index="end", text="Item A", values=("Value A1", "Value A2", "Value A3"))tree.insert(parent="", index="end", text="Item B", values=("Value B1", "Value B2", "Value B3"))```6. 绑定事件处理函数:```def handle_select(event):selected_item = tree.focus()item_text = tree.item(selected_item, "text")print("Selected Item:", item_text)tree.bind("<<TreeviewSelect>>", handle_select)```7. 运行主消息循环:```root.mainloop()```以上是treeview的基本用法,下面将详细介绍各个步骤。
22树形列表控件(Treeview)树形列表控件(Treeviw)实现了一种层次化的结构数据,用户可以用鼠标打开或者隐藏相应数据或者节点。
Treeview是没有根节点的,每一层都可以有很多的节点。
经典的使用场景有:(1)表格类似于其他语言的Grid控件,或者Excel表格。
可以行列的形式展示数据。
(2)目录列表实现文件目录的管理,可以展开或者折叠显示目录以及文件。
Treeview有关的概念:(1)item在Treeview中显示的每一个内容,都被定义为item,和Excel中cell的概念类似。
每一个item 可以有一个文字的内容或者图片内容,这些内容是最终展现在控件中的。
(2)iid每一个item都有唯一的一个字符串标识iid。
可以用户自己定义,也可以使用系统设定的值。
需要注意的是,iid必须是唯一的,不可重复的。
(3)childchild其实也是item,不过它的含义是指定item的子项。
比如item是一个目录,那么它的下面的文件以及子目录就是此item的child。
通常在遍历整个Treeview控件的时候,child会被用到。
(4)parentparent与child类似,不过是指定item的父控件。
相当于父目录。
(5)ancestorancestor是指定item的从第一层节点到它的父节点的集合,也就是它的所有的上层节点的集合。
(6)visible指定的item是否可见。
比如在表格中,有些行或者列会被隐藏。
不过第一层节点总是可见的。
(7)descendant与ancestor类似,不过是指定item的从子节点一直到最后一层节点的集合。
(8)tagitem还可以有别名。
不同的item可以有相同的别名。
这样好处是可以给同样属性的item一起赋值。
比如,目录名称用斜体表示,而文件名称用正常的字体显示。
只有给所有的代表目录的item的tag赋值为’directory’,而代表文件的item的tag赋值为’file’,就可以很分别的实现上面的功能,而不需要为每一个item进行单独的赋值。
TreeView控件可以以树型方式来组织项目,不仅显示直观、界面友好,而且项目的管理和操作更为方便,是当前比较流行的一个控件。
该控件的特点是在较小的空间可以分层次显示大量的数据,并且可以按照用户的要求检索数据。
该控件具有以下功能:通过可以展开或者折叠的节点遍历数据。
图形化和文本化的节点显示。
拖放操作。
包括剪切、复制和粘贴的节点操作。
■典型编程通常TreeView控件用来让用户选择数据,或者进行数据的管理。
比如,在一个人事管理软件中,使用部门、姓和名这样的三层结构查找数据就比较容易,而且可以通过拖拉来进行人事单位的变动。
首先,在窗口打开时创建该控件。
下面的脚本向TreeView控件中首先添加最高级别的项目:TreeViewItem ltvi_itemltvi_item.children = Trueltvi_item.SelectedPictureIndex = 1ltvi_bel = "餐饮部"ltvi_item.Data = "餐饮部"ltvi_item.PictureIndex = 1Tv_1.InsertItemLast(0,ltvi_item)ltvi_bel = "接待部"ltvi_item.Date = "接待部"ltvi_item.PictureIndex = 2Tv_1.InsertItemLast(0,ltvi_item)上面的脚本添加所有一级项目,可以反复使用上面的脚本,直到添加完所有的一级项目。
因为这些一级项目在程序运行之前就可以确定,所以可以直接添加。
对于数据可能要发生变动的,应该从数据库中提取数据,通过循环来添加项目。
下面的脚本在用户开始拖动时判断选中项目是否允许拖动。
在部门、姓和名三层结构中,只允许拖动最低一层的数据。
所以,在BeginDrag事件中编写如下脚本:TreeViewItem ltvi_sourceIf ltvi_source <> 2 Then //判断用户选中的是否是职工,只能拖动职工This.Drag(Cancel!)Else//保存被拖动项目和其父项目,语句省略End If当用户在可以接收拖动数据的项目上时,应该高亮显示该项目,以给用户一定的操作暗示信息。
Pythontkinter之Treeview(表格)1、Treeview的基本属性常⽤参数意义①master=win, # ⽗容器②height=10, # 表格显⽰的⾏数,height⾏③columns=columns, # 显⽰的列④show='headings', # 隐藏⾸列⑤heading() # 定义表头⑥column()#定义列⑦anchor='w'#对齐⽅式,可选n, ne, e, se, s, sw, w, nw, center⑧command=lambda: print('学号')#点击表头执⾏的回调函数⑨minwidth=100#表格的最⼩列宽# -*- encoding=utf-8 -*-import tkinterfrom tkinter import *from tkinter import ttkif __name__ == '__main__':passwin = () # 窗⼝win.title('南风⼂轻语') # 标题screenwidth = win.winfo_screenwidth() # 屏幕宽度screenheight = win.winfo_screenheight() # 屏幕⾼度width = 1000height = 500x = int((screenwidth - width) / 2)y = int((screenheight - height) / 2)win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # ⼤⼩以及位置columns = ['学号', '姓名', '性别', '出⽣年⽉', '籍贯', '班级']table = ttk.Treeview(master=win, # ⽗容器height=10, # 表格显⽰的⾏数,height⾏columns=columns, # 显⽰的列show='headings', # 隐藏⾸列)table.heading(column='学号', text='学号', anchor='w',command=lambda: print('学号')) # 定义表头table.heading('姓名', text='姓名', ) # 定义表头table.heading('性别', text='性别', ) # 定义表头table.heading('出⽣年⽉', text='出⽣年⽉', ) # 定义表头table.heading('籍贯', text='籍贯', ) # 定义表头table.heading('班级', text='班级', ) # 定义表头table.column('学号', width=100, minwidth=100, anchor=S, ) # 定义列table.column('姓名', width=150, minwidth=100, anchor=S) # 定义列table.column('性别', width=50, minwidth=50, anchor=S) # 定义列table.column('出⽣年⽉', width=150, minwidth=100, anchor=S) # 定义列table.column('籍贯', width=150, minwidth=100, anchor=S) # 定义列table.column('班级', width=150, minwidth=100, anchor=S) # 定义列table.pack(pady=20)win.mainloop()运⾏2、插⼊数据到表格中常⽤参数意义①table.insert('', END, values=data) # 添加数据到末尾# -*- encoding=utf-8 -*-import tkinterfrom tkinter import *from tkinter import messageboxfrom tkinter import ttkdef insert():# 插⼊数据info = [['1001', '李华', '男', '2014-01-25', '⼴东', '计算5班', ],['1002', '⼩⽶', '男', '2015-11-08', '深圳', '计算5班', ],['1003', '刘亮', '男', '2015-09-12', '福建', '计算5班', ],['1004', '⽩鸽', '⼥', '2016-04-01', '湖南', '计算5班', ],]for index, data in enumerate(info):table.insert('', END, values=data) # 添加数据到末尾if __name__ == '__main__':passwin = () # 窗⼝win.title('南风⼂轻语') # 标题screenwidth = win.winfo_screenwidth() # 屏幕宽度screenheight = win.winfo_screenheight() # 屏幕⾼度width = 1000height = 500x = int((screenwidth - width) / 2)y = int((screenheight - height) / 2)win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # ⼤⼩以及位置tabel_frame = tkinter.Frame(win)tabel_frame.pack()xscroll = Scrollbar(tabel_frame, orient=HORIZONTAL)yscroll = Scrollbar(tabel_frame, orient=VERTICAL)columns = ['学号', '姓名', '性别', '出⽣年⽉', '籍贯', '班级']table = ttk.Treeview(master=tabel_frame, # ⽗容器height=10, # 表格显⽰的⾏数,height⾏columns=columns, # 显⽰的列show='headings', # 隐藏⾸列xscrollcommand=xscroll.set, # x轴滚动条yscrollcommand=yscroll.set, # y轴滚动条)for column in columns:table.heading(column=column, text=column, anchor=CENTER,command=lambda name=column:messagebox.showinfo('', '{}描述信息~~~'.format(name))) # 定义表头table.column(column=column, width=100, minwidth=100, anchor=CENTER, ) # 定义列 xscroll.config(command=table.xview)xscroll.pack(side=BOTTOM, fill=X)yscroll.config(command=table.yview)yscroll.pack(side=RIGHT, fill=Y)table.pack(fill=BOTH, expand=True)insert()insert()insert()insert()btn_frame = Frame()btn_frame.pack()Button(btn_frame, text='添加', bg='yellow', width=20, command=insert).pack()win.mainloop()3、删除表格中的数据常⽤参数意义①get_children()#获取所有对象②table.delete()#删除对象# -*- encoding=utf-8 -*-import tkinterfrom tkinter import *from tkinter import ttkdef insert():# 插⼊数据info = [['1001', '李华', '男', '2014-01-25', '⼴东', '计算5班', ],['1002', '⼩⽶', '男', '2015-11-08', '深圳', '计算5班', ],['1003', '刘亮', '男', '2015-09-12', '福建', '计算5班', ],['1004', '⽩鸽', '⼥', '2016-04-01', '湖南', '计算5班', ],]for index, data in enumerate(info):table.insert('', END, values=data) # 添加数据到末尾def delete():obj = table.get_children() # 获取所有对象for o in obj:table.delete(o) # 删除对象if __name__ == '__main__':passwin = () # 窗⼝win.title('南风⼂轻语') # 标题screenwidth = win.winfo_screenwidth() # 屏幕宽度screenheight = win.winfo_screenheight() # 屏幕⾼度width = 1000height = 500x = int((screenwidth - width) / 2)y = int((screenheight - height) / 2)win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # ⼤⼩以及位置columns = ['学号', '姓名', '性别', '出⽣年⽉', '籍贯', '班级']table = ttk.Treeview(master=win, # ⽗容器height=10, # 表格显⽰的⾏数,height⾏columns=columns, # 显⽰的列show='headings', # 隐藏⾸列)table.heading(column='学号', text='学号', anchor='w',command=lambda: print('学号')) # 定义表头table.heading('姓名', text='姓名', ) # 定义表头table.heading('性别', text='性别', ) # 定义表头table.heading('出⽣年⽉', text='出⽣年⽉', ) # 定义表头table.heading('籍贯', text='籍贯', ) # 定义表头table.heading('班级', text='班级', ) # 定义表头table.column('学号', width=100, minwidth=100, anchor=S, ) # 定义列table.column('姓名', width=150, minwidth=100, anchor=S) # 定义列table.column('性别', width=50, minwidth=50, anchor=S) # 定义列table.column('出⽣年⽉', width=150, minwidth=100, anchor=S) # 定义列table.column('籍贯', width=150, minwidth=100, anchor=S) # 定义列table.column('班级', width=150, minwidth=100, anchor=S) # 定义列table.pack(pady=20)insert()f = Frame()f.pack()Button(f, text='添加', bg='yellow', width=20, command=insert).pack(side=LEFT)Button(f, text='删除', bg='pink', width=20, command=delete).pack(side=LEFT)win.mainloop()4、添加滚动条常⽤参数意义①xscroll = Scrollbar(tabel_frame, orient=HORIZONTAL)#⽔平滚动条②yscroll = Scrollbar(tabel_frame, orient=VERTICAL)#垂直滚动条③xscrollcommand=xscroll.set, # table绑定x轴滚动条事件④yscrollcommand=yscroll.set, # table绑定y轴滚动条事件⑤xscroll.config(command=table.xview)#⽔平滚动条绑定table的x轴事件⑥xscroll.pack(side=BOTTOM, fill=X)#放置⽔平滚动条,放在最下⾯⑦yscroll.config(command=table.yview)#垂直滚动条绑定table的y轴事件⑧yscroll.pack(side=RIGHT, fill=Y)#垂直滚动条,放置在最右边⑨table.pack(fill=BOTH, expand=True)#放置table,必须写在放置⽔平和垂直滚动条之后# -*- encoding=utf-8 -*-import tkinterfrom tkinter import *from tkinter import messageboxfrom tkinter import ttkdef insert():# 插⼊数据info = [['1001', '李华', '男', '2014-01-25', '⼴东', '计算5班', ],['1002', '⼩⽶', '男', '2015-11-08', '深圳', '计算5班', ],['1003', '刘亮', '男', '2015-09-12', '福建', '计算5班', ],['1004', '⽩鸽', '⼥', '2016-04-01', '湖南', '计算5班', ],]for index, data in enumerate(info):table.insert('', END, values=data) # 添加数据到末尾if __name__ == '__main__':passwin = () # 窗⼝win.title('南风⼂轻语') # 标题screenwidth = win.winfo_screenwidth() # 屏幕宽度screenheight = win.winfo_screenheight() # 屏幕⾼度width = 1000height = 500x = int((screenwidth - width) / 2)y = int((screenheight - height) / 2)win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # ⼤⼩以及位置tabel_frame = tkinter.Frame(win)tabel_frame.pack()xscroll = Scrollbar(tabel_frame, orient=HORIZONTAL)yscroll = Scrollbar(tabel_frame, orient=VERTICAL)columns = ['学号', '姓名', '性别', '出⽣年⽉', '籍贯', '班级']table = ttk.Treeview(master=tabel_frame, # ⽗容器height=10, # 表格显⽰的⾏数,height⾏columns=columns, # 显⽰的列show='headings', # 隐藏⾸列xscrollcommand=xscroll.set, # x轴滚动条yscrollcommand=yscroll.set, # y轴滚动条)for column in columns:table.heading(column=column, text=column, anchor=CENTER,command=lambda name=column:messagebox.showinfo('', '{}描述信息~~~'.format(name))) # 定义表头table.column(column=column, width=100, minwidth=100, anchor=CENTER, ) # 定义列xscroll.config(command=table.xview)xscroll.pack(side=BOTTOM, fill=X)yscroll.config(command=table.yview)yscroll.pack(side=RIGHT, fill=Y)table.pack(fill=BOTH, expand=True)insert()insert()insert()insert()btn_frame = Frame()btn_frame.pack()Button(btn_frame, text='添加', bg='yellow', width=20, command=insert).pack()win.mainloop()易错点①command=lambda name=column:messagebox.showinfo('', '{}描述信息~~~'.format(name)) 正确绑定事件点击表头后,显⽰对应表头的描述信息command=lambda :messagebox.showinfo('', '{}描述信息~~~'.format(column)) 错误绑定事件点击表头后每次显⽰的都是描述班级信息(列表最后⼀个元素)区别在于正确写法给定了形参,每个形参使⽤for循环给的局部变量column的值,每次都是不⼀样的,⽽错误写法给定的是for循环中的局部变量column,for循环结束后,局部变量column就是最后⼀个列表的值,因此输出都是列表最后⼀个值。
易语言树形框写法易语言中的树形框(TreeView)是一种用于显示层级结构数据的控件。
您可以使用以下代码来创建和操作树形框:1. 创建树形框控件:```vbTreeView.Create(父窗口句柄, 控件ID, 左边距, 上边距, 宽度, 高度) ```其中,父窗口句柄是树形框所属的窗口句柄,控件ID是树形框的标识,左边距、上边距、宽度和高度是树形框在窗口中的位置和尺寸信息。
2. 设置树形框属性:```vbTreeView.Set(控件ID, 属性, 值)```可以通过以上代码设置树形框的各种属性。
常用的属性包括背景颜色("bkcolor")、字体颜色("fontcolor")和字体大小("fontsize")等。
3. 添加树节点:```vbTreeView.AddItem(控件ID, 父节点ID, 节点ID, 节点文本, 图标索引) ```使用以上代码可以向树形框中添加树节点。
父节点ID为0表示添加一级节点,节点ID是新增节点的标识,节点文本是节点显示的文本内容,图标索引是节点显示的图标索引(可选)。
4. 获取选中的节点:```vbTreeView.GetSelectedNode(控件ID)```使用以上代码可以获取当前树形框中选中的节点ID。
该方法返回选中节点的标识,如果没有选中的节点,返回值为0。
5. 删除节点:```vbTreeView.DeleteItem(控件ID, 节点ID)```使用以上代码可以删除树形框中指定的节点及其所有子节点。
节点ID是要删除的节点的标识。
6. 清空树形框:```vbTreeView.Clear(控件ID)```以上代码可以清空树形框中的所有节点。
上述是树形框的基本操作示例,您可以根据需要结合具体的业务逻辑编写代码。
delphi中Treeview的使用介绍每一个节点下子节点形成这一节点的Items属性,当前节点有一个唯一的Index(TreeNode的Index属性),用于说明子节点在Items中的位置,每一个节点下的子节点是顺序编号的,第一个是0,第二个是1,依次类推。
用IndexOf方法获得子节点的顺序,绝对顺序(AbsoluteIndex)则是指从Treeview第一个项开始的顺序值,第一个是0,如此推下去。
Item属性则根据Index的值返回当前节点的第Index个子节点。
Count则表明属于此项的所有子节点的数量。
用MoveTo方法将Item由一个位置移到另一个位置。
Expanded属性表明是否所有的子项都全部展开(包括子项的子项),为True表示全部展开。
IsVisible属性表明一个项是否在树中能被看到,如果树全部展开那么这个Item是肯定可以被看到。
HasChildren属性表明一个项是否有子项。
GetFirstChild, GetLastChild, GetPrevChild, and GetNextChild分别返回当前项子项的第一个、最后一个和前一个、后一个项。
GetNextSibling and GetPrevSibling则返回在同一Level下的下一个和上一个项。
GetNextVisible and GetPrevVisible则返回能看得到的下一个和上一个项。
如果一个节点有Parent,则HasAsParent方法返回True. Parent为当前项的父项。
Focused属性确定焦点是否落在此节点上,被Focus时会一个标准的方框围住。
很显然,只有一个节点会被聚焦。
Selected属性表明一个节点是否被选中,同样只有一个节点会被选中。
DropTarget属性表明节点在拖动操作中是源还是目标。
.1.添加、删除、修改节点:静态的方法可以在设计时通过Items的编辑器设置各节点的内容。
PB中TreeView控件使用技巧一、应用TreeView 控件的一般步骤1、建立一个应用,并设好与数据库的接口,这是操作数据库的前提。
2、在应用中建一应用窗口W_1,在其上加入二个名为dw_3和dw_4的datawindow控制对象和一个名为TV_1的TreeView对象。
3、修改DW_3属性General:把Datawindow object name填写一个已存在的名为DW_date的datawindow(注意:它与datawindow控制对象是不同的),用于生成树视图项,将其Visible项设为不可见。
4、修改DW_4属性General:把Datawindow object name填写一个已存在的名为DW_TS的datawindow对象,用于显示查询出的具体内容。
5、编辑TV_1的属性TreeView的树视图项不能直接编辑,必须在Script中编写程序。
Picture:在Picture Name中加入四个不同的图标,用于代表树视图中的两个层次(一、二级)、两种状态(未选、选中)。
General:可根据具体应用设定是否选中,其中:Delete Items:运行中是否允许删除表项。
Disable PragDrog: 运行中是否允许拖放表项。
Edit Labels: 运行中是否允许单击表项来改变表项的标题。
Show Buttons:是否在表项放显示+-按钮,有示相对的扩展和收缩。
Hide Selection:当该控件失去焦点时,选中项是否以高亮度显示。
Show Line:表项间是否加一竖线。
Lines At Root:所有根层表项是否用竖线连接。
Indentation:子表项相对于父表项的向右缩进度。
6、编写TV_1的Script这里是TreeView控件的关键,也是难点。
二、TreeView 控件的信息构成及创建树视图项TreeViewItem是TreeView 控件的基本信息单位,树视图项的生成一般有二种方法,一种是先生成根层视图项,再在应用中动态生成下级视图项,另一种是把全部树视图项一次和成。
1.被选择的节点的索引:
tree.selectedNodeIndex
2.被单击的节点的索引:
tree.clickedNodeIndex
3.获取一个节点:
tree.getTreeNode(nodeIndex)
4.在根节点下增加一个子节点:
var tree = document.all['TreeView1'];
var node = tree.createTreeNode() ;
tree.add(node);
node.setAttribute( "text", "aaaa");
5.在当前节点下增加一个子节点:
var tree = document.all['TreeView1'];
var node = tree.createTreeNode() ;
var parentNode =
tree.getTreeNode( tree.clickedNodeIndex);
parentNode.add(node);
node.setAttribute( "text", "aaaa");
6.通过XML文件来增加子节点:
node.setAttribute("NavigateUrl","xxx");
node.databind();
7.动态增加子节点后自动展开:
node.setAttribute('expanded', 'true');//MS提供的HTC中需要修改一个地方,否则就会产生一个异常
8.获取节点的属性:
node.getAttribute("xxx")
9.设置节点的属性:
node.setAttribute('xxx', 'xxxx');
10.常用属性列表:
11.获取父节点:
node.getParent()
12.获取子节点:
node.getChildren()
13.判断节点是否有子节点
node.getChildren().length > 0
14.响应onselectedindexchange事件:
var tree = document.all["tvMain"];
tree.attachEvent("onselectedindexchange", SelectedIndexChange);。