【发布时间】:2023-12-29 05:16:01
【问题描述】:
我在表单上有一个TTreeView,它有很多TTreeViewItem 节点。
我只想在用户展开TTreeViewItem 节点之一时调用某个函数(这并不一定意味着用户“选择”了其中一个节点)。
我已尝试使用以下处理程序捕获此事件:
TTreeView.OnChange
TTreeView.OnClick
TTreeView.OnMouseDown
TTreeViewItem.OnClick
TTreeViewItem.OnMouseDown
但是当我只单击可展开节点左侧的可爱小箭头时,似乎都没有触发这些。
有没有办法在用户展开TTreeViewItem时得到通知?
【问题讨论】:
-
在 TTreeViewItem 上有一个私有方法
DoButtonClick。您可以尝试使用它。 -
简单地重新分配
TTreeViewItem.FButton.OnClick事件可能比直接挂钩TTreeViewItem.DoButtonClick()更容易。或者也许有一种方法可以为“按钮”样式资源指定自定义对象?如果是这样,您可以尝试拦截TTreeViewItem发送给它的StartTriggerAnimation('IsExpanded')通知。 -
Firemonkey 的 TreeView 缺少报告节点何时折叠或展开的功能,但您可以在这篇文章中找到解决方法Adding OnChangeExpanded Functionality to TTreeView
标签: delphi firemonkey delphi-xe3