VFP TreeView控件使用详解(2)
工作帮手网(www.foxer.net),自2001年创办以来,一直坚持为在校学生、在职职工服务的宗旨。网站目前有【工作总结频道】和【公文资料频道】,为各位网友提供工作总结,学生作文,述职报告,入党申请,论文范文等实用性文章,每天坚持更新。强烈建议将本站加入收藏夹。
这个控件的使用率也是很高的,所以我们就应该好好掌握一下了。在梅子这儿有一个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。Indentation属性
该属性设置各个新的Node对象缩进的量度。格式如下: 表单.TreeView名.Indentation=值 值的范围:
必须大于0的数,缺省值为38.00,默认单位是磅
4。Nodes属性和Index属性
该属性设置访问TreeView控件使用Nodes对象集合,Index指定Nodes集合中的某一个节点。访问格式: 表单.TreeView名.Nodes(index)
例如要表示当前表单中Treenode1控件的Nodes的第三个节点为: thisform.treenode1.Nodes(3)
Nodes集合的属性 1。Nodes集合的属性
该属性指定当前Nodes集合中的节点个数。格式: 表单.TreeView名.Nodes.Count
2。Text属性
该属性指定Nodes集合中某个节点的文字信息。格式: 表单.TreeView名.Nodes(index).Text
3。Key属性
该属性指定Nodes集合中某个节点的关键字。格式:工作帮手网 www.foxer.net
表单.TreeView名.Nodes(index).Key
4。另外还有对Nodes集合中某个节点进行操作的属性Root(返回当前节点的根结节)、FirsSibling(第一个兄弟节点)和Next(下一个兄弟节点)。 例如:
thisform.treeview1.Nodes(3).Root.Key
thisform.treeview1.nodes(3).firstsibling.key thisform.treeview1.nodes(3).next.key
上面的语句就分别返回了当前表单中treeview1控件的第三个节点的根结节、第一个兄弟节点和下一个兄弟节点的关键字。
Nodes集合的方法 1。Clear方法
该方法清除当前Nodes集合中的所有节点。格式: 表单.TreeView名.Nodes.Clear 本篇《VFP TreeView控件使用详解》为网站编辑为您精心挑选的示例范文,仅供参考,请勿照抄。建议将本站加入收藏夹。
2。Add方法
该方法向当前Nodes集合中添加一个新节点。格式: 表
单.TreeView.Nodes.Add(Relative,RelationShip,Key,Text,Image,Selectedimage) 解释:
Relative 表示相关联的亲属,一般用其亲属的关键字表示 RelationShip 表示与关联的亲属之间的关系。 1-tvwNext 表示亲属间是平等关系 4-tvwNext 表示亲属间是父子关系
Key 表示此节点的关键字,也是区别于其他节点的唯一标识 Text 表示此节点要显示的文本 Image 表示节点处显示的图形 举例:
thisform.treeview1.nodes.add(,\增加根节点r
thisform.treeview1.nodes.add(\增加子节点c1
TreeView控件的常用事件 1。NodeClick事件
该事件在用户单击节点文本时激活。格式: PROCEDURE TreeView名.NodeClick
LPARAMETERS node && node表示当前节点对象 &&你的程序 ENDPROC
2。Expand事件
该事件在用户展开一个\节点时激活。格式: PROCEDURE TreeView名.Ecpand LPARAMERS node &&你的程序 ENDPROC
3。Collapse事件
该事件在用户折叠一个\节点时激活。格式: PROCEDURE TreeView名.Collapse LPATAMETERS node &&你的程序 ENDPROC
简单的例子(有关用数据表作为数据环境给TreeView控件增加节点,其中再次使用了imagelist控件)
建立一个表单treeview1.scx,其数据环境为zgb.dbf,表结构如下: xm bmh bm
-------------------------
王华 001 人事处 李名 002 财务处 张应 003 科研处 张强 001 人事处 李冰 002 财务处 孙样 002 财务处 理应 003 科研出
-------------------------
向该表单中添加一个treeview控件treeview1和一个图象列表控件imagelist1,向imagelist1控件中插入两幅图片。在imagelist1控件上设计如
下事件:
PROCEDURE imagelist1.click
thisform.treeview1.linestyle=1 thisform.treeview1.style=7
select distinct bmh,bm from zgb into curs temp order by bmh selec temp go top
do while .not.eof()
this.nodes.add(,,'K'+temp.bmh,rtrim(temp.bm)) sele zgb
set filter to bmh=temp.bmh go top
do while .not.eof()
this.nodes.add('K'+TEMP.BMH,4,,RTRIM(XM)) skip enddo sele temp skip
enddo
this.imagelist=thisform.imagelist1.object for imagelist=1 to this.nodes.count if this.nodes(imagelist).children>0 this.nodes(imagelist).image='bmkey' else
this.nodes(imagelist).image='zgkey' endi
endfor ENDPROC <完>
下贴还有一个复杂一些的例子 相对复杂的例子其中使用了类
建立一个表单treevies2.scx,在其中添加一个treeview控件oletree、7个命令按钮、一个形状、一个组合框、4个标签。
对表单中对应的类treeview2的定义如下:
******************************************* **类:treeview2
******************************************* DEFINE CLASS treeview2 AS form DataSession=2 top=19 left=13 height=297 width=568 docreate=.t.
caption=\ maxbutton=.f. windowState=0 cnextkey=1_ cdbfname=\ name=\
*如果一个dbf不能打开,则设置为.f. openedsuccessfully=.f.
ADD OBJECT oletree AS olecontrol with; top=79,; left=11,; height=182,; tabindex=1,; name=\
ADD OBJECT cboparent AS combobox with; fontbold=.f.,; fontname=\宋体\fontsize=10,; rowsource=\value=0,;
controlsource=\height=23,; left=236,; style=2,;
tabindex=10,; top=267,; width=242,;
name=\
ADD OBJECT label1 AS label with; autosize=.t.,; fontbold=.t.,; fontname=\宋体\fontsize=12,;