动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   程序开发 → 阅读文章

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

作者来源: 
阅读 数 145 人次 , 2006-4-26 11:16:00 

本文通过树的深度优先算法来实现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

  
 本文Tags优化  算法  网站优化  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PB6中怎样实现用代码配置ODBC
· 下一篇:在PB中应用AutoCAD图形数据库
· Windows XP远程控制解决大麻烦
· 在Pocket PC上编写游戏之六
· 基于Nokia手机的移动游戏开发步步通
· 浅谈多态—概念描述
· 实施UML九项注意(英文)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077