各位兄台:树型控件的一个BUG?还是逻辑错误?请赐教

zly999 2003-08-31 03:57:55
由于应用中的问题,发现用TreeView控件的ExpandItem()函数展开某个节点时,总会触发ItemPopulate事件(据说:只在第一次展开时才触发,以后就不触发了)。
试验如下:
建立一个窗体w_1
在w_1上放一个树型控件tv_1[HasButtons,HasLines,LinesAtRoot三个属性都选上]
在树型控件旁边放两个按钮cb_1(展开),cb_2(合起)

(1)在w_1的Open事件中写代码:
treeviewitem tv_root
tv_root.label="111"
tv_root.children=true
tv_1.insertitemfirst(0,tv_root)

(2)在tv_1的ItemPopulate事件中写代码:
treeviewitem tv_item

tv_item.label="222"
tv_1.insertitemfirst(1,tv_item)

tv_item.label="333"
tv_1.insertitemfirst(1,tv_item)

(3)cb_1(展开)的click事件中写代码
long Item_handle//句柄
Item_handle=tv_1.findItem(CurrentTreeItem!,0)
tv_1.ExpandItem(item_handle)//展开当前节点

(4)cb_2(合起)的click事件中写代码
long Item_handle//句柄
Item_handle=tv_1.findItem(CurrentTreeItem!,0)
tv_1.CollapseItem(item_handle)//合起当前节点


试验如下:
当我使用鼠标展开、合起节点时,一点问题都没有。当我把焦点放在根结点上时,交替按“展开”“合起”按钮后,就会出现节点下面重复加入了字节点。

【各位帮忙做做试验看,有无解决方法】
...全文
26 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zly999 2003-09-01
  • 打赏
  • 举报
回复
没有帮我做实验,失望!!!!!!!!!!!!!!
不是说:ItemPopulate事件只触发一次嘛,用鼠标也确实如此,为何用函数就不对
jdsnhan 2003-08-31
  • 打赏
  • 举报
回复
你得到当前节点的TreeViewItem,判断Children属性,然后在操作。
jdsnhan 2003-08-31
  • 打赏
  • 举报
回复
1、构建树的跟节点时即
treeviewitem tv_root
tv_root.label="111"
tv_root.children=true
tv_1.insertitemfirst(0,tv_root)
最好放到tv的constructor事件中
2、ItemPopulate事件中,为什么每次都是
tv_1.insertitemfirst(1,tv_item)
这样对于跟节点来说,必然会重复啊!
zly999 2003-08-31
  • 打赏
  • 举报
回复
帮帮忙
zly999 2003-08-31
  • 打赏
  • 举报
回复
帮帮忙
zly999 2003-08-31
  • 打赏
  • 举报
回复
帮帮忙

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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