我有一个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
标志。
1条答案
按热度按时间7rtdyuoh1#
将树视图的
HideSelection
属性设置为False