如何在TTreeView中扩展TTreeViewItem节点?

时间:2013-10-17 19:15:00

标签: delphi firemonkey delphi-xe3

我在表单上有一个TTreeView,它有很多TTreeViewItem个节点。

我想仅在用户扩展其中一个TTreeViewItem节点时调用某些函数(这并不一定意味着用户“选择”其中一个节点)。

我尝试使用以下处理程序捕获此事件:

TTreeView.OnChange
TTreeView.OnClick
TTreeView.OnMouseDown
TTreeViewItem.OnClick
TTreeViewItem.OnMouseDown

但是当我只点击可扩展节点左侧的可爱小箭头时,似乎没有触发这些。

当用户扩展 TTreeViewItem时,是否有通知方式?

1 个答案:

答案 0 :(得分:1)

不幸的是,FireMonkey中的TTreeViewTTreeViewItem在展开/折叠节点时不会公开任何公共事件。

我唯一看到的是点击节点的展开/折叠按钮时的私有TTreeViewItem.DoButtonClick()事件处理程序,以及当节点StartTriggerAnimation('IsExpanded')时发送到同一按钮的IsExpanded个通知财产改变价值。

实际的按钮对象是从TTreeView的样式获得的,所以也许有一种方法可以对该对象进行子类化,这样你就可以覆盖StartTriggerAnimation(),或者至少为它添加一个隐藏的子对象默认的TFmxObject.StartTriggerAnimation()实现通知子控件发送到父控件的相同触发器。