delphi 在OnExit之后保留TTreeView中的选择

vwoqyblh  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(159)

我有一个TTreeView组件,用来在表单中显示层次结构,我希望能够选择一些组件并“操作”它们,例如,单击按钮移动它们。
我的问题是,只要我单击按钮,选定的对象就会消失。
我已经看到在TCustomTreeView类中有一个DoExit过程:

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

我尝试重写此方法,以便不调用InvalidateSelectionRects,但没有效果。
在TTreeView外部进行交互时,是否有方法保留(多个)选定的元素?
编辑:通过@dwrbudr提供的提示,我可以列出选定的项目,但最后一个没有出现:
将所选项目打印到备忘录中的代码:

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;

我单击了Panel 1、Panel 2、Panel 4和Panel 3(按此顺序),但Panel 3(因为它是我单击的最后一个面板)没有出现在Selections列表中。
我想我还应该检查TreeView1.Selected节点,看看它是否设置了TreeView1.Selected.Selected标志。

7rtdyuoh

7rtdyuoh1#

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

TreeView.HideSelection := false;

相关问题