pb中无限制添加Tree节点-续

作者:达通兴电脑科技公司(www.study01job.com) 郭宝利

二、添加到什么位置上

接上一篇文章,我们继续讨论如何确定要添加节点的位置。这实际上是一个树型结构的遍历问题。树型结构的遍历通常使用递归程序来实现,所以本节给出一个按照内容查找,对树型结构进行遍历,如果和要查找的内容相等,则返回该节点的Handle。插入在返回后完成,使用上一篇文章中介绍的知识就可以实现。函数如下:

/*-----------------------------------------------------------------------------

* 函数名称:long wf_reader(long al_handle,string as_target)

* 函数作用:遍历树型结构,找到指定内容的节点。

* 返 回 值:节点的Handle。

* 算法描述:遍历树型结构,使用递归完成。

* 编写日期:2004.6.26

* 编 写 人:达通兴电脑科技 郭宝利

*----------------------------------------------------------------------------*/

long ll_handle

long ll_handleOld

TreeViewItem ltvi_Item

String ls_label

String ls_data

if tv_1.Getitem(al_handle,ltvi_Item)= -1 then return -1

ls_label=Trim(String(ltvi_Item.label))

ls_data=Trim(String(ltvi_Item.data))

if ls_label = as_target then

return al_handle

else

ll_handle = tv_1.FindItem(ChildTreeItem!,al_handle)

end if

 

if ll_handle > 0 then

if tv_1.Getitem(ll_handle,ltvi_Item)= -1 then return 0

ls_label=Trim(String(ltvi_Item.label))

ls_data=Trim(String(ltvi_Item.data))

if ls_label = as_target then

return ll_handle//找到了要添加的节点

else

return wf_reader(ll_handle,as_target)

end if

else

ll_handleOld = al_handle

ll_handle = tv_1.FindItem(NextTreeItem!,ll_handleOld)

do while ll_handle < 0

ll_handle = tv_1.FindItem(ParentTreeItem!,ll_handleOld)

if ll_handle > 0 then

ll_handleOld = ll_handle

ll_handle = tv_1.FindItem(NextTreeItem!,ll_handleOld)

else

ll_handle = tv_1.FindItem(NextTreeItem!,ll_handle)

if ll_handle < 0 then

return -1

end if

end if

loop

if tv_1.Getitem(ll_handle,ltvi_Item)= -1 then return -1

ls_label=String(ltvi_Item.label)

ls_data=String(ltvi_Item.data)

if ls_label = as_target then

return ll_handle//找到了要添加的节点

else

return wf_reader(ll_handle,as_target)

end if

end if

return ll_handle

调用举例。比如,我们在窗口上放置单行编辑器sle_1,用户输入内容,点击命令按钮‘查找’时调用上面的函数:

String ls_find

long ll_handle

ls_find = Trim(sle_1.text)

ll_handle = tv_1.FindItem(RootTreeItem!, 0)

if ll_handle > 0 then

ll_handle = wf_reader(ll_handle,ls_find)

if ll_handle > 0 then

MessageBox('找到',string(ll_handle))

else

MessageBox('','没有找到')

end if

end if

时间: 2025-01-03 07:28:35

pb中无限制添加Tree节点-续的相关文章

pb中无限制添加Tree节点

作者:达通兴电脑科技公司(www.study01job.com) 郭宝利 这是3个问题: 1.如何遍历,取出要添加到树型结构中的数据. 2.添加到什么位置上.需要我们事先确定好父节点. 3.如何向已经存在的Tree结构中的指定父节点添加新节点. 上面3个问题中,第3个问题最简单.只要了解一下Tree的相关属性和函数就可以解决.我们先解决最简单的. 一.如何向已经存在的Tree结构中的指定父节点添加新节点. 定义一个TreeViewItem类型的变量,设置该变量的相关属性后,使用函数InsertI

Oracle 10203 RAC环境添加新节点(五)添加节点的软件安装过程中的问题

简单描述一下,在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程.共享存储已经在第三个节点上配置完成,这里主要介绍操作系统上和Oracle上的配置. 简单描述添加节点的软件安装过程中碰到的问题. 第一个错误是在运行ADDNODE.SH工具时碰到的,在节点3的安装过程中出现了空间不足的错误: INFO: ld.so.1: lsnodes: fatal: libskgxn2.so: open failed: No such file or dire

ASP操作xml--向xml文件中的添加节点

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>  <HEAD>   <TITLE> 向xml中添加新节点 </TITLE>   <META NAME="Generator" CONTENT="EditPlus">   <META NAME="Author" C

vs中如何在treeview节点后面添加按钮

问题描述 vs中如何在treeview节点后面添加按钮 解决方案

在VB中动态添加可响应消息的控件

在VB编程中,经常要根据不同的情况在运行时向窗口中添加或者删除控件,而各个控件还要响应各种事件.在一般的情况下是首先在设计时将控件加入到窗口中,在它们的各个事件中写入代码,然后将它们的Visible属性设置为False.在运行时再使控件显示出来,但是这样既不方便同时也因为在设计时在窗口中加入太多的控件而使得程序的运行速度变慢.下面我向大家介绍一种通过编程在运行时动态添加和删除控件的方法 首先建立一个工程文件,然后在Form1中加入以下的代码: Dim WithEvents cmdMyComman

hadoop教程(十二) HDFS添加删除节点并进行集群平衡

HDFS添加删除节点并进行hdfs balance 方式1:静态添加datanode,停止namenode方式 1.停止namenode 2.修改slaves文件,并更新到各个节点 3.启动namenode 4.执行hadoop balance命令.(此项为balance集群使用,如果只是添加节点,则此步骤不需要) ----------------------------------------- 方式2:动态添加datanode,不停namenode方式 1.修改slaves文件,添加需要增加

在pb中使用WINSOCK控件的方法

随着资源共享和实时通讯的需要,很多计算机应用程序早已甩开单兵作战的模式,转入联合行动. 网络在计算机世界里,越来越发挥着举足轻重的作用.在WINDOWS应用程序中,处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件.许多资料都细述了WINSOCK在VB中的使用方法,就连WINDOWS本身提供的hlp文件也是针对VB而写的.笔者因为实际应用的需要,琢磨出了WINSOCK控件在PB中的应用方法.好东西不敢独自享用,拿出来与大家共享. 下面以一个简单程序为例,说明WINSOCK控

Oracle 10203 RAC环境添加新节点(四)添加一个新节点上的数据库实例

简单描述一下,在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程.共享存储已经在第三个节点上配置完成,这里主要介绍操作系统上和Oracle上的配置. 这一篇添加一个新节点上的数据库实例. 首先确保数据库处于启动状态,如果数据库没有启动: bash-2.03$ srvctl start inst -d testrac -i testrac1 bash-2.03$ srvctl start inst -d testrac -i testrac2 确

Oracle 10203 RAC环境添加新节点(二) CLUSTER软件的建立

简单描述一下,在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程.共享存储已经在第三个节点上配置完成,这里主要介绍操作系统上和Oracle上的配置. 这一篇描述CLUSTER软件的建立. 在新增节点racnode3上将共享存储上的裸设备授权给Oracle用户: bash-3.00# chown oracle:oinstall /dev/rdsk/c1t500601603022E66Ad* 建立和节点1.节点2上一致的/dev/rac/vot和/