数据未从 ListView 填充到 TreeView 中
Data not being populated in TreeView from ListView
我希望选定的列表数据填充树
这是我的尝试
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[]
属性 通过索引访问节点时,它必须从树中的第一个节点开始并迭代 forwards 计数节点,直到它到达指定的索引。您在向后访问时对访问的每个节点重复相同的前向扫描。这是很多浪费的开销。
我希望选定的列表数据填充树
这是我的尝试
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[]
属性 通过索引访问节点时,它必须从树中的第一个节点开始并迭代 forwards 计数节点,直到它到达指定的索引。您在向后访问时对访问的每个节点重复相同的前向扫描。这是很多浪费的开销。