BCB或Delphi中,怎样使TreeView的各级Node响应Edit中键入的数字字串而相应展开和收拢?

saucerman 2000-02-14 02:07:00
BCB或Delphi中,怎样使TreeView的各级Node响应Edit中键入的数字字串而相应展开和收拢?

从TreeView中点击各级节点来将数字字串选到Edit中比较容易一些,而反过来在Edit中键入数字字串
使TreeView的各级Node响应它而相应展开和收拢对应节点好象不太好控制,至少我现在没控制住。

比如说吧,Edit1是拿来给操作员向数据库中输入Product产品表的主键Prod_ID产品号的,产品号已按
规定分了级,举例大家都熟悉的电脑产品吧------

第一级包括1.硬件和2.软件两大类
第二级1.硬件又包括1.PC,2.外设,3.服务器,4.网件,5.PDA等
第二级2.软件又包括1.系统软件,2.应用软件,3.自由软件等
第三级1.硬件下的1.PC又包括1.主机,2.显示器,3.键盘等2.外设又包括1.扫描仪,2.打印机,等
2.软件下的1.系统软件又包括1.操作系统、2.编译系统、3.DBMS系统等
2.软件下的2.应用软件又包括1.办公套件、2.财物软件、3.ERP、4.网管软件等
第四级1.主机下包括1.CPU,2.内存,3.主板,4.显示卡等,2.打印机下包括1.针打、2.喷打、3.激打等
1.操作系统又包括1.Windows,2.Linux,3.Unix,4.OS/2等

举例不一定准确,大致是这么个意思。TreeView1是对用户的操作给以提示的,告知现在处于哪个等级
的哪个位置,接下来有哪些子项可供选择。

比方我在Edit1中键入1,TreeView1的第一级节点就都显现,但软件收拢而硬件展开,以提示下一步可选的
有1.PC,2.外设,3.服务器,4.网件,5.PDA等,再键入2,会将外设节点展开,而其他节点都不展开,
软件,服务器,网件,PDA等节点都不再现。要考虑当键入多位字串时,只用鼠标选中其中相连的某部分的
准确响应,比如1234,用鼠标选中23,再一下键入5,应能准确响应到154。

总之,除键入第一位数外,其他任何时候前溯都只准确显示当前节点及其直接的前辈节点,后继只展开并
提示当前节点的直接儿子辈后代节点。另外,很重要的别忘了,我还有可能随时加入Tree中还没定好的
NODE呵。比如,键入124,程序要弹出对话框提示:没有这个产品号,是否加入?如选是,再输定ID所表示
的产品级名后,Tree中新生成相应节点可要加对地方啊。

请高手们赐教时,一定给出例程,拜托!
...全文
452 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhzh426 2000-07-17
  • 打赏
  • 举报
回复
在editbox的onchange或者onkeypress事件中对treeview进行遍历,只能如此了(针对
自己编程而言,用控件另当别论!)
ploto 2000-03-18
  • 打赏
  • 举报
回复
Sorry,上次的用法是错误的,我有一个新的用法,稍微麻烦一些,回头发到你的信箱中去
ploto 2000-03-15
  • 打赏
  • 举报
回复
例:154可以以下面的方式展开
Treeview1->Items->Item[0]->Item[4]->Item3->Expand
trybird 2000-03-15
  • 打赏
  • 举报
回复
Rich_Zhou大侠,下面应该是您给我发的邮件吧----
但我竟不知如何办,是三份带数码字的附件,现在还躺在我的邮箱里呢----
我曾把它下载到硬盘,用Winzip等都打不开,请教您该怎么办是正确方法?----

收信人: <truejun>
发信人: ruilide@public1.ptt.js.cn
主 题: Fw: demo.zip [1/3]
 
附件0(9531181551)
 




Rich_Zhou 2000-03-15
  • 打赏
  • 举报
回复
信收到没有?
最近我的Rich_Zhou@yeah.net信箱有问题
可以用Rich_Zhou_Temp@990.net和我联系
trybird 2000-03-06
  • 打赏
  • 举报
回复
Rich_Zhou:

我就是saucerman,因为saucerman的户口已弹尽粮绝,
现以trybird身份进入。
我的确是没收到哇!

如果您仍愿热心相助的话,还可再发给我,给你三个妹儿吧,
你可多加几次CC抄送——
如果真发了,我怎么都该收到吧?
感谢诚心相帮!愿意欣赏您的大作!
虽然问题已解,不过真心愿意多长些见识。
这一贴还没打分呢,如果试了您的方案觉佳,
全数打分或另外给您加分!!!

My E_mail:

truejun@cmmail.com
truejun@21cn.com
truejun@163.net

Rich_Zhou 2000-03-05
  • 打赏
  • 举报
回复
email 我早就发过了没受到? 如果现在你好要 告诉我 好了
奇怪!
saucerman 2000-03-05
  • 打赏
  • 举报
回复
没有哇!虽然问题早已解决
用的是——
http://www.teemach.com
的TeeTree

我到现在也没收到Rich_Zhou大侠的妹儿——
连个妹儿影都没见着!
bbsboyy 2000-03-05
  • 打赏
  • 举报
回复
Rich_Zhou:
一个有意思的话题。
给我也来一份。 likeliu@263.net
Rich_Zhou 2000-02-15
  • 打赏
  • 举报
回复
对edit的跟踪是放在edit_Changeing事件中,所以每一次变化是相对于上一值而言(增加一位或减少一位索引码)的变化,对于treeview则是相对于焦点node而言 因此对treeview的变化从treeview.selection 开始搜索 增加一位搜索父节点 减少一位搜索子节点(子节点不存在可以提示添加)可以对TNode对象添加一个Tag属性 从而用于存放索引码 需要源代码情与我联系 (可提供delphi 源代码)
saucerman 2000-02-15
  • 打赏
  • 举报
回复
Rich_Zhou朋友:欢迎赐教并提供您的delphi 源代码。

我的 E_mail: truejun@163.net
saucerman 2000-02-14
  • 打赏
  • 举报
回复
当然不能用'\'来分开各个级别了,不过确实有可能有两位或多位数代表一个级别
的情况,比如“1234”中“23”是一个级别。

不过真使人失望,难道Firing_Sky大侠提供的方法真是唯一的方法吗?先前我们也试过,并翻过很多手册,好象每次也只有从根节点繁锁地找下来才行。

也有朋友刚推荐曾制作过TeeChart构件的公司制作的TeeTree构件,不过还没试过。
不行一起试吧!听说有源码,不过谁知要花多少功夫!
有哪位试过了---行---赶紧叫声好!
http://www.teemach.com


Firing_Sky 2000-02-14
  • 打赏
  • 举报
回复
对于Edit1里的内容,假定你是用'\'来分开各个级别的。
把各个级别解析开后,又根节点开始,逐次的比较一个节点的所有子节点的值是否和各个级别的解析值是否相等,如果找到了相等的节点的话则搜索这个已找到的节点的下一级节点,如此下去最后找到需要的节点(假定为MyTreeNode),在调用MyTreeNode.Expand方法,就可以展开了
如果找不到需要的节点,就提示是否创建新节点……
saucerman 2000-02-14
  • 打赏
  • 举报
回复
更正:贴子中“总之......都只准确显示当前节点及其直接的前辈节点”一句的
“直接”,应为“直系”。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧