网站首页

家园论坛

老版论坛

家园博客

业界新闻

技术文档

下载中心

速查中心

图片中心

硬件资讯
上一篇:PB中如何将可视控件放置于别的控件上 下一篇:PB10中OLE Microsoft OLE DB数据库连接配置
PB中TreeView控件的深度优化搜索算法程序

来源:本站原创 作者: 添加日期:2005-9-4 19:19:56 点击次数:
---- 由于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

 
设为首页 | 加入收藏 | 业务办理 | 友情链接 | 论坛版面 | 浙ICP备07502118号 |