用过treeview的朋友请进。

PBVC 2002-03-12 09:08:59

怎样得到 treeview 的所有下级 。 我想实现的功能是 , 当父亲一级的属性改变后 , 他会自动将其所有的子项的属性一起改变 。 有可能是从第一级开始,
也有可以是较后的级数。

我是第一次用treeview,对它的一些属性不熟 。试过用递归但没成功。

各位谁有实现类似功能的代码 , 麻烦贴一下。
...全文
191 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
keani 2002-03-13
  • 打赏
  • 举报
回复
理性猎人,呵呵,高手!跟风~~~~~~
PBVC 2002-03-12
  • 打赏
  • 举报
回复
来个具体点的吧.

怎样把一个 treeviewitem 的所有项目 StatePictureIndex 设为 1 。

就用递归 !


McdullMini 2002-03-12
  • 打赏
  • 举报
回复
同意楼上
我做的就是递归的
为什么不可以呢?
zxthello 2002-03-12
  • 打赏
  • 举报
回复
应该用递归调用,首先找到第一个子孩子,在对这个子孩子进行寻找兄弟的递归调用,直到修改完所有,这与所在level无关。
Leehunter 2002-03-12
  • 打赏
  • 举报
回复
在treeview中自定义一个事件ue_findallchildren(ulong au_handle)
事件脚本如下:
treeviewitem l_tvi
ulong li_item

//递归调用,查出所有的子项
li_item=this.finditem(childtreeitem!,au_handle)
do while li_item <> -1
this.getitem(li_item,l_tvi)
//加入其它代码,修改l_tvi的值
//存在子项,则递归调用,继续搜索
if l_tvi.children then
this.event ue_findallchildren(li_item)
end if
li_item=this.finditem(nexttreeitem!,li_item)
loop
magichzx 2002-03-12
  • 打赏
  • 举报
回复
看你数据库结构怎样才能决定如何写代码。
cdz0451 2002-03-12
  • 打赏
  • 举报
回复
把问题描述的具体一点

如果直接在数上进行更改,要充分利用finditem()函数,然后利用getitem()后更改treeviewitem的属性,在setitem().

如果你生成树的数据结构比较容易查找子节点,不妨参照楼上的做法,然后重新生成树
fzymr 2002-03-12
  • 打赏
  • 举报
回复
long ll_child_handle

ll_handle = tv_1.finditem(ChildTreeItem!,ll_current_handle)

if ll_handle - -1 then

//没有子项

end if
zhanwei 2002-03-12
  • 打赏
  • 举报
回复
使用treeview + datastore/datawindow实现起来会比较容易!
Leehunter 2002-03-12
  • 打赏
  • 举报
回复
如果你的treeviewitem在生成过程中自动加入子项的话,children自动设为true,不管你原来是何值,因此,可以使用children来判断是否有子项。
kaisa_cheng888 2002-03-12
  • 打赏
  • 举报
回复
好像是只能通过取得下一级的handle
PBVC 2002-03-12
  • 打赏
  • 举报
回复

那是你 100 % 的错觉 , 知道就好了 。 也有可能是你记错了, 这里还有个叫 VCPB 的。 HE HE ~

问题接着问: treeview 是否有其它方法得到是否有下一级 ?

Iwant 2002-03-12
  • 打赏
  • 举报
回复
PBVC 可是我 崇拜 的高手 之 一 哦。
怎么这么问?
PBVC 2002-03-12
  • 打赏
  • 举报
回复
再问一下:

treeview是否拥有下一级是否只能由treeviewitem的.Children = ??? 值来判断 ?

因我生成 TREEVIEW 的数据是变化的 , 在动态生成时没办法知道是否拥有下一级. 所以在里只能将Children的值全设为 FALSE 了。


所以要问,是否有其它方法来判断 TREEVIEW 是否拥有下一级.



keani 2002-03-12
  • 打赏
  • 举报
回复
这样看来,也只是个树的遍历问题,只是要把当前的项作为根。遍历树的算法很多,随便查查就有的,下面就是其中一个。要把当前的项模拟为根,做个标志就可以了,或者只向下查。

//====================================================================
// Function - gf_listtv
//--------------------------------------------------------------------
// Description:遍历树型控件上所有item
//--------------------------------------------------------------------
// Arguments:
//
// treeview whichtv 引用的树型控件
// <description>
// long handle 要遍历的item的句柄
// <description>
//--------------------------------------------------------------------
// Returns: (INTEGER)
//--------------------------------------------------------------------
// Author: 自在清风 Date: July, 2001
//====================================================================
treeviewitem mytvi
long ll_curhandle
ll_curhandle = whichtv.finditem(childtreeitem!,handle)
if ll_curhandle < 0 then return

do
whichtv.getitem(ll_curhandle,mytvi)
//------------------------------
//此处填写自己的处理代码
//------------------------------

if mytvi.children then //如果有子节点,调用自身
gf_listtv(whichtv,ll_curhandle)
end if
ll_curhandle = whichtv.finditem(NextTreeItem!,ll_curhandle)
loop while ll_curhandle > 0


这样就可以遍历整个treeview了不知这样是否能让你满意
justlove 2002-03-12
  • 打赏
  • 举报
回复
string cailiao_bumen[]={"熔铸车间","挤压车间","氧化车间","包装车间"}
int mingcheng

treeviewitem cailiao

for mingcheng=1 to 4
cailiao.label=cailiao_bumen[mingcheng]
cailiao.pictureindex=mingcheng
cailiao.selectedpictureindex=mingcheng
cailiao.statepictureindex=0
cailiao.overlaypictureindex=0
cailiao.children=true

tv_1.insertitemlast(0,cailiao)
next

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧