0

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

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

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

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

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

当有另一个表单处于活动状态并且应用程序未被此表单释放终止时,错误消息是:

应用程序引发的错误消息:列表索引超出范围 (-1)

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

我尝试以销毁的形式删除 IWTreeView1.ClearAll,但这根本没有帮助。

4

1 回答 1

0

而不是 SubItems.Clear 我现在使用

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

这行得通。仍然开放以获得更好的解决方案,可能不涉及所有子项的循环。

于 2009-09-18T12:23:36.880 回答