控件TreeView节点控制,迷惑不解!!!

symansoft 2000-03-06 10:02:00
诸位高人:
在下用TreeView时有如下问题百思不得其解,盼指教:
1.怎样使TreeView的某节点及其子节点在屏幕上不可见,在需要时又可显示出来,如同Form中的控件由Visable属性控制一样?
2.用户单击TreeView某节点左边的+号时,往往要展开其子节点,怎样才能不展开呢(单击节点左边的+号时无动作)。


愚人,2000.3.6.
...全文
345 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
limodou 2000-03-08
  • 打赏
  • 举报
回复
AllowExpansion不是一个属性而是在OnExpand事件中的一个变参。
光明山人 2000-03-07
  • 打赏
  • 举报
回复
对第一个问题,我是这么做的:
在Form的OnCreate中创建一个TMemoryStream变量TVSaver(当然在OnDestroy中销毁),当TreeView初始化完全后(即可能Data属性赋了值),这时TreeView是一个全集,调以下语句保存它:
TreeView.SaveToStream( TVSaver );

以后每次在Form的OnShow中执行以下语句恢复TreeView:
TreeView.LoadFromStream( TVSaver );
然后裁剪TreeView,使之符合当时的条件。

第二个问题,被Lin回答了。

symansoft 2000-03-07
  • 打赏
  • 举报
回复
Symansoft再上列位:
不好意思,我实际上用的是C++Builder4.0,因没有象样的参考书,虽用了几个月,惜未入门。因担心BCB没有Delphi普及,故将问题放在Delphi区请教。
1。第一个问题似乎可按Firing_Sky的意见,但我还没有试过,只是看了BCB的帮助觉得似乎可行。如果Firing_Sky救人救到底,给个示例就更好了。
2。也许BCB和Delphi间有些细微区别,我找遍了TTreeView、TTreeNodes和TTreeNode的所有属性,没有发现AllowExpansion属性,所以Lin和Firing_Sky的解决第2个问题的方法似乎行不通,所以再次请教。
问题彻底解决后,将给出各自应得的分数,包括热心帮助分。
limodou 2000-03-07
  • 打赏
  • 举报
回复
可以创建一个列表,用于存放不显示的结点。在点右键时如果隐藏结点,则将这个结点
信息复制一下,并放在列表中,同时记录删除结点的上一结点及层数(用于显示时,加
到正确地地方)再将treeview上的结点删除。显示时则根据列表中的信息恢复到正确的
位置。不知行不行。


Firing_Sky 2000-03-07
  • 打赏
  • 举报
回复
我的意思是你自己创建TTreeNode对象,并把它放到TreeView.item.Data里面,在需要显示的时候再把它挂到所需的TreeNode下面去
steps 2000-03-07
  • 打赏
  • 举报
回复
对第一个问题,我的看法是:
人工在程序中控制建立Tree,如建立一个建立树的procedure(。。。),
在传送参数时明确哪些节点根建立,哪些不要。
symansoft 2000-03-07
  • 打赏
  • 举报
回复
我是本问题的提出者symansoft,感谢诸位的解答,但现在还不能给分,因为:
1.Lin和Firing_Sky没有解答第一个关键问题。分数不会很高。
2.agui的回答有些眉目,但是现在还用不着LoadFrom和SaveTo等语句。倒是最末一句“然后裁剪TreeView,使之符合当时的条件”令人感兴趣,能详细点吗?
3.steps的回答过于简略,且题意理解有误。
本题要求对TreeView节点根据一定条件进行动态控制隐现,比如用鼠标右击某节点,则该节点隐藏起来,以后单击某按钮,则所有被隐藏的节点都全部显示在TreeView中相位置。显然这个过程是动态的。
Ray 2000-03-07
  • 打赏
  • 举报
回复
对于第二个问题可先获得该TREEVIEW当前已选取的TREENODE对象然后判断该节点是否
可打开如不可则调用TREENODE的Collapsed(False)方法使该节点折叠。
Firing_Sky 2000-03-06
  • 打赏
  • 举报
回复
同意Lin的看法,但如果你要在子节点下保存一些数据的话,可以先把数据放到TTreeNode.Data下面去
Lin 2000-03-06
  • 打赏
  • 举报
回复
To symansoft:
1、Noway;
2、在TreeView的OnExpanding事件中可以控制:设置AllowExpansion := False;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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