Domanda

Sul mio modulo ho un IWTreeView e due pulsanti. Un pulsante elimina alcuni IWTreeViewItems, l'altro rilascia il modulo:

procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
  IWTreeView1.Items[0].Subitems.Clear;
end;

procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
  Release;
end;

Il rilascio del modulo dopo l'eliminazione di IWTreeViewItems provoca un'eccezione:

  

Messaggio di errore generato dal   applicazione: violazione di accesso all'indirizzo   indirizzo 004E0D8A nel modulo   'TryTree.exe'. Lettura dell'indirizzo   00000000

Quando è attivo un altro modulo e l'applicazione non viene chiusa da questa versione del modulo, il messaggio di errore è:

  

Messaggio di errore generato dal   applicazione: Elenca indice da   limiti (-1)

Uso di IntraWeb 9.0.42 (a causa dei controlli TMS e Delphi 2006, poiché TMS non ha testato con 10.0.17 e delphi 2006).

Ho provato a distruggere IWTreeView1.ClearAll nella forma, il che non ha aiutato affatto.

È stato utile?

Soluzione

Invece di SubItems.Clear ora uso

for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
    TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;

Funziona. Ancora aperto per soluzioni migliori, forse non coinvolgendo un ciclo attraverso tutti i sotto-elementi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top