在TreeViewItem.EndUpdate上,Delphi Firemonkey Xe 8 TreeView Argument超出范围

时间:2015-07-19 11:25:23

标签: delphi treeview firemonkey treeviewitem delphi-xe8

我在表单和按钮上有一个TreeView,用于清除项目并添加新项目 如果有足够的项目离开屏幕,所以你必须滚动查看它们全部,第二次我点击按钮我得到“参数超出范围”错误
如果表格大到足以容纳所有物品,那么它似乎很开心 如果我取出tv1.BeginUpdate和tv1.EndUpdate它有时会工作,但仍然会随机获得Argument超出范围的错误

procedure TfrmMain.btn1Click(Sender: TObject);
var i : Integer;
begin
  tv1.Clear;
  tv1.BeginUpdate;
  try
    for I := 0 to 10 do begin
      with TTreeViewItem.Create( tv1 ) do begin
        Parent := tv1;
        Text := inttostr(i);
      end;
    end;
  finally
    tv1.EndUpdate;
  end;
end;

这是一个示例项目
https://github.com/dangas56/Delphi-XE8-TreeNode-ArgumentOutOfRange-Error
切记两次点击基本填充按钮

编辑:如果有人可以推荐另一个允许您展开和折叠子项目的组件,请告诉我们

2 个答案:

答案 0 :(得分:0)

我尝试调查,您的代码似乎没问题。我认为问题来自FMX.Controls文件。我尝试编辑和修改它,但似乎需要更多调查。我建议向embarcadero申报一个bug。 (它取决于屏幕的大小,然后在EndUpdate命令中出现错误)

答案 1 :(得分:0)

我遇到了同样的问题。你需要在tv1.BeginUpdate之后放置tv1.Clear(即作为Try ... Finally中的第一行)。