PB TreeView 控件实现查找功能

long ll_handle,ll_level,ll_handletree[]
int li_find
string ls_find
treeviewitem ltvi_1

SetPointer(hourglass!)
tv_1.setredraw(false)
ls_find = sle_find.text
if trim(ls_find) = '' then 
	Messagebox("提示","请先输入查询条件!")
	return 
end if 
li_find = 0
if il_handle > 0 then 
	ll_handle = il_handle + 1
else
	ll_handle = tv_1.finditem(RootTreeItem! ,0)
end if 

//tv_1.expandall(ll_handle) 
tv_1.expandItem(ll_handle)  
do while ll_handle > 0 
	tv_1.getitem(ll_handle,ltvi_1)
//	if ltvi_1.label = ls_find then
	if pos(ltvi_1.label,ls_find) > 0  then //支持模糊查询
		li_find = 1
		exit
	end if
	ll_handle = tv_1.finditem(NextVisibleTreeItem! ,ll_handle) 
//	tv_1.expandall(ll_handle) 
	tv_1.expandItem(ll_handle) 
loop

ll_level = 1

if ll_handle > 0 then
	ll_handletree[ll_level] = ll_handle
	ll_handle = tv_1.finditem(ParentTreeItem! ,ll_handle)
	do while ll_handle > 0
		ll_level ++
		ll_handletree[ll_level] = ll_handle
		ll_handle = tv_1.finditem(ParentTreeItem! ,ll_handle)
	loop 
end if

ll_handle = tv_1.finditem(RootTreeItem! ,0)

do while ll_handle > 0
	tv_1.CollapseItem(ll_handle)
	ll_handle = tv_1.finditem(NextTreeItem! ,ll_handle)
loop

do while ll_level > 0 and li_find = 1
	tv_1.expanditem(ll_handletree[ll_level])
	if ll_level = 1 then
		tv_1.selectitem(ll_handletree[ll_level])
		tv_1.setfocus()
		il_handle = ll_handletree[ll_level] //记录上次查询的节点
		exit
	else 
		ll_level -- 
	end if 
loop

tv_1.setredraw(true)
if li_find = 0 then 
	il_handle = 0
	ll_handle = tv_1.finditem(RootTreeItem! ,0)
	tv_1.expandall(ll_handle) 
	Messagebox("提示","找不到【" + ls_find+"】!")	
end if 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值