删除IWTreeViewItems会导致表单释放异常

时间:2009-09-18 06:38:35

标签: delphi delphi-2006 intraweb

在我的表单上,我有一个IWTreeView和两个按钮。一个按钮删除一些IWTreeViewItems,另一个按钮删除表单:

procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
  IWTreeView1.Items[0].Subitems.Clear;
end;

procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
  Release;
end;

删除IWTreeViewItems后释放表单会导致异常:

  

由...引发的错误消息   应用程序:访问冲突   地址004E0D8A在模块中   'TryTree.exe'。读取地址   00000000

如果有另一个表单处于活动状态且该表单发布未终止该应用程序,则错误消息为:

  

由...引发的错误消息   应用程序:列出索引   bounds(-1)

使用IntraWeb 9.0.42(因为TMS控件和Delphi 2006,因为TMS没有使用10.0.17和delphi 2006进行测试)。

我尝试以破坏形式使用IWTreeView1.ClearAll,这根本没用。

1 个答案:

答案 0 :(得分:0)

而不是SubItems.Clear我现在使用

for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
    TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;

这很有效。仍然可以获得更好的解决方案,也许不涉及所有子项目的循环。