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
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 4
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 4

打赏作者

PB菜鸟

你的鼓励将是我创作的最大动力。

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值