我在一个TTreeView中添加了若干结点,
我想根据需要隐藏其中的某个结点,不是删除。
我看TTreeNode没有关于Visible的属性啊?

解决方案 »

  1.   

    IsVisible property (TTreeNode)Indicates whether the tree node is currently visible in the tree view image. Delphi syntax:property IsVisible: Boolean;C++ syntax:__property bool IsVisible = {read=IsNodeVisible, nodefault};DescriptionA node is visible if it is on level 0 or if all its parents are expanded. IsVisible indicates whether the node is part of the current tree view image. It does not indicate whether or not the node is scrolled into view when the tree view image is larger than the size of the tree view control.
      

  2.   

    我看了这个属性,但是他只是表示该结点是否显示在TListView区域中。是个只读属性。
    我不能修改他啊。
      

  3.   

    AdvancedCustomDrawItem  的时候,发现是你想要隐藏的  不画就是了
      

  4.   

    如果你的TREE的节点是一层层的画上去的话,那你可以标记其中的某个的属性,比如定义他的Visible,经过判断之后,再决定是否画到树上去,至于你说的在TREE里面隐藏,这样功能好象没有吧
      

  5.   

    我使用的就是普通的TTreeView,然后用AddChild方法添加的结点,不是我自己画的。TTreeView真的不能隐藏结点吗?
      

  6.   

    请查看MSDN的TreeView控件的用法,它提供了多少控制接口:
    TreeView应该是没有办法隐藏某个节点的,即使自画风格不画出节点文字,该节点还是看得么只是没有了文字而已。如果真的要做到这种效果,就要跳出TreeView来考虑问题了,自己定义一张内存树结构,每个结点有Visible属性,当Visible属性改变时,通知TreeView让它重新加载你的内存树结构,加载的时候就可以判断该节点的Visible,如果Visible为False,则连同它的节点都不显示到TreeView中。
      

  7.   

    AddChild就是你自己画的呀,你不AddChild就行了
      

  8.   

    建议你不需要一次全部Add上去,打开一层画一层,这样效率高点,如果你一次全部画好,刷新的速度不快
      

  9.   

    to:linzhengqun(风。我回来了)  
    你说的办法我看还是比较可行。但是效率问题如何?我的目的是,我有一个很大的树,要在程序初始化时加载上,然后根据条件,来将不同的结点显示,或隐藏。因为要频繁反复根据条件来判断那些结点显示,或隐藏这个过程,所以,不能每次都重新添加结点。
      

  10.   

    建议使用 VirtualTree 控件。