Eliminar IWTreeViewItems provoca una excepción en el lanzamiento del formulario
-
22-07-2019 - |
Pregunta
En mi formulario tengo un IWTreeView y dos botones. Un botón elimina algunos IWTreeViewItems, el otro libera el formulario:
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
IWTreeView1.Items[0].Subitems.Clear;
end;
procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
Release;
end;
Al liberar el formulario después de eliminar IWTreeViewItems, se produce una excepción:
Mensaje de error generado por el aplicación: Infracción de acceso en Dirección 004E0D8A en el módulo 'TryTree.exe'. Lectura de direcciones 00000000
Cuando hay otro formulario activo y la aplicación no finaliza con este lanzamiento de formulario, el mensaje de error es:
Mensaje de error generado por el aplicación: Indice la lista de límites (-1)
Uso de IntraWeb 9.0.42 (debido a los controles de TMS y Delphi 2006, ya que TMS no ha probado con 10.0.17 y delphi 2006).
Traté de IWTreeView1.ClearAll en el formulario destruir, lo que no ayudó en absoluto.
Solución
En lugar de SubItems.Clear ahora uso
for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;
Esto funciona. Todavía abierto para mejores soluciones, tal vez no involucrando un ciclo a través de todos los subpuntos.