Удаление IWTreeViewItems вызывает исключение при выпуске формы

StackOverflow https://stackoverflow.com/questions/1442886

  •  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;

Это работает. Все еще открыт для лучших решений, возможно, не включая цикл по всем подпунктам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top