Как вывести TreeViewItem в видимую (прокручиваемую) область - PullRequest
0 голосов
/ 12 июня 2019

Я ищу способ навигации по коду для элемента в виде дерева. Объект должен быть перемещен в видимую область. Я не смог найти метод ни в 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;

1 Ответ

1 голос
/ 24 июня 2019

После глубокого анализа FMX.TreeView я нашел простое решение:

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

Эта простая манипуляция вызывает внутренний метод TCustomTreeView.UpdateSelection, который перемещает выбранный элемент в видимую область.

...