2024年4月12日发(作者:)

树的遍历:此树是对指定节点的下级节点进行遍历;

函数TreeList(long handle)

long ll_Handle

Treeviewitem ltvi_Item

ll_Handle = Tv_em(ChildTreeItem!,handle)

do while ll_Handle <> -1

Tv_m(ll_Handle ,ltvi_Item)

//根据ltvi_Item做相应的操作

ltvi_Item即取出的节点,

ltvi_ictureindex 节点状态,一般用来区分复选框

ltvi_ 节点标题

ltvi_ 节点创建时存放的数据

TreeList(ll_Handle)

ll_Handle = Tv_em(NextTreeItem!,ll_handle)

loop

记住:populateitem()事件是在用.expand()方法时出发的,要想展开节点的子节点,就要将子节点放在

populateitem()事件里加到树中,否则打不开子节点。

Item ( itemhandle ) 树控件展开哪个节点

All ( itemhandle )

于根节点。

树控件展开某个节点的所有子节点,一般用

em(firstviewvisibletreeitem,0) 这是获得可见树的第一个节点,一

般用来,获取根节点,但是当节点过多时则根节点就会被隐藏,此时就不能得到根了,此

时就要用到item(handle)

item(handle) 当我们展开的节点多时,视觉就会移到下一页,此

时用它则会将视觉焦点放到该节点。

ItemFirst ( handleparent, item ) 在父亲节点下插入第一个子节点。

m ( itemhandle, item ) 它可以修改节点的属性,不是覆盖节点。

Trv_item(0) 则可以删除整棵树。

不要认为一颗树的第一个节点的句柄是1 ,这是不确定的。

当我们用循环一次性建树时,一定要注意树变量的属性值,最好是在循环的开头将属性清

空,不然上一次的属性也会带到下一个节点。

PB下使用TreeView控件实现多级分类检索

2007-8-10 作者: 编辑:问天 点击进入论坛

PowerBuilder中的TreeView控件为树状列表,其特点是信息项呈树状层次结构,且形式灵

活,可展开也可回缩,使用鼠标进行控制,操作简便。因此在应用中,可将其与DataWindow

配合,一个提供信息的分类体系,一个提供具体信息,实现信息的多级分类检索,这样可大

大地方便查询,提高系统的实用性。

在PowerBuilder下,TreeView控件的开发技术一般较为复杂,但如果将它的构成机制及主

要事件、函数领会清楚,掌握它并不困难。下面就是使用TreeView控件实现多级分类检索

涉及的主要开发技术。

一、TreeView控件的信息构成及创建

TreeView控件的基本信息单位是TreeViewItem项,它们按树状层次结构进行组织(如图1

所示),每个TreeViewItem项一般具有下列主要属性:

Data:Any类型数据,该项对应的内部值。

Label:String型数据,该项对应的显示文字。

Children:Boolean型数据,为Ture时表示该项还有下一层(如图1中项item1),为False

时表示该项没有下层,不能被展开(如项item111)

PictureIndex:Integer型数值,该项对应的正常图标在图标队列中的编号。

SelectedPictureIndex:Integer型数值,该项对应的选中图标在图标队列中的编号。

通过TreeView控件查阅信息,首先要将信息转化成相应的TreeViewItem项,插入到

TreeView控件中。这个工作可借助PB提供的函数来完成。

二、TreeView控件实现多级分类检索涉及的主要事件

让TreeView控件和DataWindow配合,完成信息的多级分类检索,开发过程主要涉及下列

三个TreeView事件:

Constructor事件:该事件在控件创建时触发

选中该事件主要用来插入第一层TreeViewItem项,这样用户一进入检索界面,第一层信息

项就会出现在控件中。

ItemPopulate事件:该事件在某TreeViewItem项第一次展开时触发,触发的同时系统会将

该TreeViewItem项的句柄通过参数handle传递过来。

选中该事件主要用来插入当前TreeViewItem项对应的下层信息项。选择这个事件插入下层

信息项,开发时只需考虑插入本项的直属下层,不必去管下层的下层,可大大简化开发工作;

另外,由于用户在执行查询时一般只涉及一些个别类,那些没有涉及的信息类没有展开,因

而没有必要建立下层信息项,在这里做到了,因此改善了应用的执行效率。

SelectionChanged事件:该事件在每次变更选择项后触发,触发的同时系统会将变更前后选

择项的句柄通过参数oldhandle、newhandle传递过来。

选中该事件主要用来控制DataWindow显示当前信息类的内容。这样每次在TreeView控件

中选中一个信息项,DataWindow即刻将其详细信息显示出来。