OnExit 后在 TTreeView 中保持选择

Keeping selection in TTreeView after OnExit

我有一个 TTreeView 组件,用于在表单中显示层次结构,我希望能够 select 一些组件并“操纵”它们,例如单击按钮移动它们。

我的问题是单击按钮后 selected 对象消失了。

我看到在 TCustomTreeView class 中有一个 DoExit 过程:

procedure TCustomTreeView.DoExit;
begin
  inherited;
  InvalidateSelectionsRects;
end;

我试图重写这个方法,所以 InvalidateSelectionRects 没有被调用但没有用。

有没有办法在 TTreeView 外部进行交互时保留(多个)selected 元素?

编辑:根据 @dwrbudr 提供的提示,我能够列出 selected 项目,但最后一个没有出现:

将 selected 项目打印到备忘录中的代码:

procedure TForm1.Button7Click(Sender: TObject);
var
  i: integer;
  Seleccionado: TNodoArbolComponentes;
begin
  Memo1.Lines.Clear;
  for i := 1 to self.TreeView1.SelectionCount - 1 do
  begin
    Seleccionado := (TreeView1.Selections[i] as TNodoArbolComponentes);
    Memo1.Lines.Add(Seleccionado.Componente.Name + ':' + Seleccionado.Componente.ClassName);
  end;
end;

我点击了 Panel1、Panel2、Panel4 和 Panel3(按此顺序),但是 Panel3,因为它是我最后点击的,所以没有出现在 Selections 列表中。

我想我还应该检查 TreeView1.Selected 节点,看看它是否设置了 TreeView1.Selected.Selected 标志。

将树视图的 HideSelection 属性 设置为 False

TreeView.HideSelection := false;