604
社区成员
发帖
与我相关
我的任务
分享
global function long f_tv_find (treeview atv, string as_data, boolean ab_data, long al_handle_s, long al_handle_e);//===========================================================
// f_tv_find :在树atv中从句柄为al_handle_s的节点开始查找内容
// ( 当ab_data为true时, 查找节点的data属性值;
// 当ab_data为false时, 查找节点的label属性值)as_data,
// 当查找到句柄为al_handle_e的节点时还没有找到符合条件的节点,则停止查找并返回-1
// 当查找到符合条件的节点时,则返回该节点的句柄
// 当查找完整棵树,未找到符合条件的节点,且未被中止时,则返回0
//===========================================================
if al_handle_s <= 0 then return 0
long ll_h
treeviewitem lt_tvi
if atv.GetItem(al_handle_s, lt_tvi) = -1 then return -1
if ab_data then //查找data
if (Not IsNull(lt_tvi.data)) and (string(lt_tvi.data) <> "") then
if lt_tvi.data = as_data then return al_handle_s
end if
else//查找label
if lt_tvi.label = as_data then return al_handle_s
end if
if al_handle_s = al_handle_e then return -1 //强制中止查找
al_handle_s = atv.FindItem(ChildTreeItem!, al_handle_s)
do while al_handle_s > 0
ll_h = f_tv_find(atv,as_data,ab_data,al_handle_s,al_handle_e)
if ll_h = -1 or ll_h > 0 then return ll_h //强制中止或者找到节点,则直接返回
//查找下一个兄弟节点
al_handle_s = atv.FindItem(NextTreeItem!, al_handle_s)
loop
//没有找到,则返回0
return 0
end function
long ll
ll = f_tv_find(tv_1,'明细备注',false, tv_1.FindItem(RootTreeItem!, 0), 0)
long ll
ll = f_tv_find(tv_1,'明细备注',true, tv_1.FindItem(RootTreeItem!, 0), 0)
long ll
ll = f_tv_find(tv_1,'明细备注',true, 5, 0)
long ll
ll = f_tv_find(tv_1,'明细备注',true, 5, 20)