3

我有TTreeView一个表格,它有很多TTreeViewItem节点。

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

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

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

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

有没有办法在用户展开a时得到通知TTreeViewItem

4

1 回答 1

1

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

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

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

于 2013-10-18T00:42:06.727 回答