如何在可见(滚动)区域中引入 TreeViewItem

How to bring a TreeViewItem in the visible (scroll) area

我正在寻找一种通过代码导航到树视图中的项目的方法。该对象应移动到可见区域。我无法在 TTreeView 或 TTreeViewItem 中找到方法。

以下方法并非在所有情况下都有效,因为项目位置并不总是更新:

procedure TfmxMain.MakeItemVisible(Item: TTreeViewItem);
begin
  trvMyTreeView.ViewportPosition :=
    TPointF.Create(min(Item.Position.X - trvSlideGroups.ClientWidth / 2, 0),
     min(Item.Position.Y - trvSlideGroups.ClientHeight / 2, 0));
end;

经过深入分析FMX.TreeView,我找到了一个简单的解决方案:

procedure TfmxMain.MakeItemVisible(Item: TTreeViewImageItem);
begin
  Item.Deselect;
  Item.Select;
end;

这个简单的操作调用内部方法 TCustomTreeView.UpdateSelection,将所选项目移动到可见区域。