Excluindo IWTreeViewItems faz com exceção na liberação forma
-
22-07-2019 - |
Pergunta
No meu formulário eu tenho um IWTreeView e dois botões. Um botão exclui alguns IWTreeViewItems, os outros lançamentos a forma:
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
IWTreeView1.Items[0].Subitems.Clear;
end;
procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
Release;
end;
A liberação do formulário após a exclusão do IWTreeViewItems causa uma exceção:
Mensagem de erro levantada pela aplicação: Violação de acesso no 004E0D8A endereço no módulo 'TryTree.exe'. Leitura do endereço 00000000
Quando há outra forma ativa eo aplicativo não é terminada por este lançamento forma, a mensagem de erro é:
Mensagem de erro levantada pela O índice da lista de: application limites (-1)
Usando IntraWeb 9.0.42 (por causa de controles TMS e Delphi 2006, como TMS não testou com 10.0.17 e Delphi 2006).
Eu tentei IWTreeView1.ClearAll na forma destruir, o que não ajudou em tudo.
Solução
Em vez de SubItems.Clear Eu agora uso
for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;
Isso funciona. Ainda em aberto de melhores soluções, talvez não envolvem um loop através de todos os subitens.