La suppression d'IWTreeViewItems provoque une exception lors de la libération du formulaire

StackOverflow https://stackoverflow.com/questions/1442886

  •  22-07-2019
  •  | 
  •  

Question

Sur mon formulaire, j'ai un IWTreeView et deux boutons. Un bouton supprime certains IWTreeViewItems, l’autre libère le formulaire:

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

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

La libération du formulaire après la suppression de IWTreeViewItems provoque une exception:

  

Message d'erreur généré par le   application: violation d'accès à   adresse 004E0D8A dans le module   'TryTree.exe'. Lecture d'adresse   00000000

Lorsqu'un autre formulaire est actif et que l'application n'est pas terminée par cette version, le message d'erreur est le suivant:

  

Message d'erreur généré par le   application: index de liste sur   bornes (-1)

Utilisation d'IntraWeb 9.0.42 (à cause des contrôles TMS et de Delphi 2006, ce dernier n'ayant pas été testé avec 10.0.17 et delphi 2006).

J'ai essayé de IWTreeView1.ClearAll sous la forme destroy, ce qui n'a pas aidé du tout.

Était-ce utile?

La solution

Au lieu de SubItems.Clear, j'utilise maintenant

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

Cela fonctionne. Toujours ouvert pour de meilleures solutions, n'impliquant peut-être pas une boucle dans tous les sous-éléments.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top