数据未从ListView填充到TreeView中



我希望所选的列表数据填充树

这是我尝试的

if ListView1.Items[Count].Selected then
begin
  Root := ListView1.Items[Count].Caption;
  for Itr := TreeView1.Items.Count-1 downto 0 do Begin
    if TreeView1.items[itr].Parent.Text = Root then begin
      TreeNode := TreeView1.Items[itr].getFirstChild;
      Treeview1.Items.AddChild(Treenode,ListView1.Items[Count].SubItems[0]);
      break;
    end;
  end;
end;

但是它正在创建新的节点,并且存在索引错误。

请帮助

您没有提供任何关于ListView数据的详细信息,也没有提供TreeView与该数据相关的详细信息。但我怀疑您的代码可能应该更像这样:

if ListView1.Items[Count].Selected then
begin
  Root := ListView1.Items[Count].Caption;
  for Itr := TreeView1.Items.Count-1 downto 0 do begin
    TreeNode := TreeView1.Items[itr];
    if TreeNode.Text = Root then begin
      TreeView1.Items.AddChild(TreeNode, ListView1.Items[Count].SubItems[0]);
      break;
    end;
  end;
end;

请注意,向后迭代TreeView是非常低效的。树本身不是可索引的,因此每次通过TreeView1.Items[]属性通过索引访问节点时,它都必须从树中的第一个节点开始,并迭代向前计数节点,直到达到指定的索引。在反向时,您正在对访问的每个节点重复相同的正向扫描。这是浪费了很多开销。

最新更新