| 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
|
|
| |