Löschen IWTreeViewItems verursacht Ausnahme auf Formular Release
-
22-07-2019 - |
Frage
Auf meiner Form habe ich eine IWTreeView und zwei Tasten. Eine Taste löscht einige IWTreeViewItems, die anderen Versionen der Form:
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
IWTreeView1.Items[0].Subitems.Clear;
end;
procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
Release;
end;
Loslassen die Form nach dem IWTreeViewItems Löschen verursacht eine Ausnahme:
Fehlermeldung durch die erhöhte Anwendung: Zugriffsverletzung auf Adresse 004E0D8A in Modul 'TryTree.exe'. Lesen der Adresse 00000000
Wenn es eine andere Form aktiv ist und die Anwendung ist nicht von dieser Form Release beendet, ist die Fehlermeldung:
Fehlermeldung durch die erhöhte Anwendung: Listenindex aus Grenzen (-1)
Mit IntraWeb 9.0.42 (wegen der TMS Kontrollen und Delphi 2006 als TMS hat mit 10.0.17 und delphi nicht getestet 2006).
Ich habe versucht, in Form IWTreeView1.ClearAll zerstören, was überhaupt nicht helfen.
Lösung
Statt SubItems.Clear ich jetzt verwenden
for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;
Das funktioniert. Öffnen Sie immer noch nach besseren Lösungen, vielleicht auch nicht eine Schleife durch alle Unterpunkte beteiligt sind.