科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件PB中TreeView控件的深度优化搜索算法程序

PB中TreeView控件的深度优化搜索算法程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文通过树的深度优先算法来实现TreeView的查询

作者:51cto.com整理 来源:51cto.com 2007年9月15日

关键字: PB TreeView 控件 软件

  • 评论
  • 分享微博
  • 分享邮件

本文通过树的深度优先算法来实现TreeView的查询。

由于PB的TreeView控件没有提供查找项的功能,因此本程序算是对此一缺憾的补缺。

调用语法:findtreeitem(tv_tree, findby, data)

调用参数:

tv_tree: TreeView, 指明在tv_tree树中查找

findby: boolean, 指明查找方式

false - 按标签(Label)查找

true - 按附加数据(data)查找

data: any, 指明要查找的内容

返回值:long型。若找到,返回找到的项的Handle;

若没有找到,返回0;

若出错,返回-1 

程序代码如下:

public function long findtreeitem(TreeView tv_tree,

boolean findby, any data);

long ll_hdl[]

integer li_cnt

treeviewitem lt_tvi

li_cnt = 1

ll_hdl[1] = tv_tree.FindItem(RootTreeItem!, 0)

do while li_cnt > 0

if tv_tree.GetItem(ll_hdl[li_cnt], lt_tvi)

= -1 then return -1

if findby then

if lt_tvi.data = data then

return ll_hdl[li_cnt]

end if

else

if lt_tvi.label = string(data) then

return ll_hdl[li_cnt]

end if

end if

if lt_tvi.children then

li_cnt ++

ll_hdl[li_cnt] = tv_tree.FindItem(

ChildTreeItem!, ll_hdl[li_cnt - 1])

else

ll_hdl[li_cnt] = tv_tree.FindItem(

NextTreeItem!, ll_hdl[li_cnt])

end if

do while ll_hdl[li_cnt] <= 0

li_cnt --

if li_cnt = 0 then exit

ll_hdl[li_cnt] = tv_tree.FindItem(

NextTreeItem!, ll_hdl[li_cnt])

loop

loop

return 0

end function

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章