treeview 下怎么通过label得到handle呢?

jiazhij 2003-11-27 08:48:50
treeview下面没发现find函数。我想得到label符合条件的handle。怎么办呢?
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmby 2003-11-28
  • 打赏
  • 举报
回复
如果label是唯一的话,可以一层一层的找

integer get_handle
string ls_regulation_id,as_regulation_id //分别为当前节点值和要找的节点值

ll_tvi = tv_1.FindItem(RootTreeItem!, 0)
ll_tvi_second=tv_1.finditem(childtreeitem!,ll_tvi)

do while ll_tvi_second<>-1
ll_tvi_third=tv_1.finditem(childtreeitem!,ll_tvi_second)
do while ll_tvi_third<>-1
tv_1.getitem(ll_tvi_third,xt_tvitem)
ls_regulation_id=string(xt_tvitem.label)

if ls_regulation_id=as_regulation_id then
tv_1.selectitem(ll_tvi_third)
get_handle=ll_tvi_third
exit
end if

ll_tvi_third=tv_1.finditem(NextTreeItem! ,ll_tvi_third)
loop

if lb_status=true then exit

ll_tvi_second=tv_1.finditem(NextTreeItem! ,ll_tvi_second)
loop
hzhxxx 2003-11-27
  • 打赏
  • 举报
回复
上面的函数是查找函数的主函数 uf_find_item(...)

下面的是上面函数的辅助函数 uf_if_child(...)

/**********************************************************/
//function : 判断该子项是否有子项
//parameters :
// 1. handle : 目标项句柄
//return : 有则是下一个子项的第一个句柄,-1 是没有
//author : hzh
//date : 2002.07.22
/*********************************************************/


TreeViewItem ltvi_temp

IF THIS.GetItem(handle,ltvi_temp) = -1 THEN RETURN -1
//生成句柄
IF NOT ltvi_temp.expandedonce THEN
THIS.ExpandItem(handle)
THIS.CollapseItem(handle)
END IF

RETURN THIS.FindItem(ChildTreeItem!,handle)
hzhxxx 2003-11-27
  • 打赏
  • 举报
回复


/**********************************************************/
//function : 遍历所有的项,查找目标项
//para :
// 1. handle : 项目句柄
// 2. a_data : 目标项数据
// 3. ai_type: 查找类型
//return : (none)
//author : hzh
//date : 2002.07.22
//comment :
// ai_type = 1 是准确查找
// ai_type = 2 是模糊查找
/*********************************************************/

Long l_ret,l_find
TreeViewItem ltvi_find

//没有找到
ib_find = FALSE //这是一个instance 的变量

IF IsNull(a_data) THEN
MessageBox(ga_app.dwmessagetitle,"请输入查询条件 !",StopSign!)
RETURN -1
END IF

Do While Yield()
Loop

DO WHILE handle <> -1 AND NOT ib_find
THIS.GetItem(handle,ltvi_find)
IF ai_type = 1 THEN //是准确查找
IF ltvi_find.data = a_data THEN
SelectItem(handle)
ib_find = TRUE
RETURN handle
END IF
ELSE //是模糊查找
IF Pos(ltvi_find.label,String(a_data)) > 0 THEN
SelectItem(handle)
IF MessageBox(ga_app.dwmessagetitle,'是否查找下一项 "' +&
String(a_data) + ' "' ,Question!,YesNo!,2) = 2 THEN
ib_find = TRUE
RETURN handle
END IF
END IF
END IF
//---判断该项是否有子项,有则,递归调用,处理返回值取得目标项句柄---//
l_ret = THIS.uf_if_child(handle)
IF l_ret >0 THEN
l_find = THIS.uf_find_item(l_ret,a_data,ai_type)
END IF
handle = THIS.FindItem(NextTreeItem!,handle)
LOOP

IF ib_find THEN
RETURN l_find
ELSE
RETURN -1
END IF
qianduo 2003-11-27
  • 打赏
  • 举报
回复
有finditem呀。
去看一下帮助吧!

1,075

社区成员

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

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