树型控件的查询问题???

xiao_2005 2004-10-17 06:26:21
怎么在树型控件中实现查询功能呢?
...全文
116 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
linwdm2002 2004-10-17
  • 打赏
  • 举报
回复
实现在TreeView控件中进行查找:

setpointer(hourglass!)
long ll_handle,ll_handletree[],ll_level
int li_find
treeviewitem ltvi_1

if sle_search.text = "" then
messagebox("提示","请先输入查询信息!!")
return
end if

li_find = 0
tv_1.setredraw(false)
ll_handle = tv_1.finditem(RootTreeItem! ,0)
tv_1.expandall(ll_handle)
do while ll_handle >0
tv_1.getitem(ll_handle,ltvi_1)
if ltvi_1.label = sle_search.text then
li_find = 1
exit
end if
ll_handle = tv_1.finditem
(NextVisibleTreeItem! ,ll_handle)
tv_1.expandall(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()
exit
else
ll_level --
end if
loop
tv_1.setredraw(true)
if li_find = 0 then
messagebox("提示","所给信息没有找到!!")
end if

---- 该程序是在TreeView控件中逐项进行查找比较,因而执行的效率和显示结果都不是很理想,但我们在实际应用中,通常TreeView控件都是与DataWindow相联系的,因而很容易借助DataWindow实现顺着TreeView控件的树枝往下查找,执行速度快并且定位准确(不必展开一些不必要的分枝)。而且还很容易实现模糊查询(部份匹配)。

604

社区成员

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

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