我在TTreeView对象中显示项目。当某项目具有子项时,该控件会在图标旁边绘制一个>(如果展开则为向下箭头)。

我想知道即使没有添加任何子项,我是否还能以某种方式告诉Item绘制>

在我的软件中,有某些情况可以向用户显示有子级,而无需实际添加子级(然后在选择项目时完成)

使用c ++ Builder 2009 VCL,但此Q对Delphi也应有效。

最佳答案

在VCL中,TTreeNode具有HasChildren属性:


指示节点是否有任何子代。

如果节点具有子节点,则HasChildren为true;如果节点没有子节点,则。如果树视图的ShowButtons为true,并且HasChildren为true,则当该节点折叠时,该节点的左侧将显示一个加号(+);当该节点处于折叠状态时,将显示一个减号(-)。扩展。

注意:如果节点没有子节点,则将HasChildren设置为true将显示一个(+)加号按钮,但不会添加任何子节点,并且无法扩展该节点。


因此,可以在为节点创建实际的子节点之前将其HasChildren设置为true。然后,稍后,确定该节点是否具有任何实际的子节点后,如果不存在任何子节点,则可以将HasChildren重置为false。

尽管上面的文档中有建议,但尝试扩展没有子节点但HasChildren设置为true的节点至少会触发TTreeView.OnExpanding事件。这是填充实际子节点并更新HasChildren的好地方。

关于delphi - 当还没有添加任何子级时,有没有办法显示TTreeNode的>符号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53217271/

10-11 16:02