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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top