【问题标题】:How to bring a TreeViewItem in the visible (scroll) area如何将 TreeViewItem 带入可见(滚动)区域
【发布时间】:2019-06-12 14:12:43
【问题描述】:

我正在寻找一种通过代码导航到树视图中的项目的方法。该对象应移动到可见区域。我在 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;

【问题讨论】:

  • 是否选择了项目?您应该查看 Win32 TreeView 消息 herehere。例如 TVM_SETAUTOSCROLLINFO 消息? Edit 抱歉,我没有注意到您使用的是 Firemonkey。应该有点棘手...
  • Item在MakeItemVisible被调用的时间点被选中。

标签: delphi firemonkey delphi-10.3-rio


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多