Удаление IWTreeViewItems вызывает исключение при выпуске формы
-
22-07-2019 - |
Вопрос
В моей форме есть 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 р>
Когда активна другая форма, и приложение не закрывается этим выпуском формы, появляется сообщение об ошибке:
Сообщение об ошибке, выданное приложение: список из списка границы (-1)
Использование IntraWeb 9.0.42 (из-за элементов управления TMS и Delphi 2006, поскольку TMS не тестировался с 10.0.17 и delphi 2006).
Я пытался IWTreeView1.ClearAll в форме уничтожить, что не помогло вообще.
Решение
Вместо SubItems.Clear я теперь использую
for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;
Это работает. Все еще открыт для лучших решений, возможно, не включая цикл по всем подпунктам.