在我的表单上,我有一个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,这根本没用。
答案 0 :(得分:0)
而不是SubItems.Clear我现在使用
for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;
这很有效。仍然可以获得更好的解决方案,也许不涉及所有子项目的循环。