Problème de lenteur avec les TTreeView dans Delphi 5 et +
Sous Delphi 5 et plus, Le TTreeView pose de gros problèmes lors de l'ajout d'éléments en cours d'execution: Cela prend à peu près 50 fois plus de temps que sous Delphi 4, pour une fonction identique !!! (En effet, il faut attendre plus d'une minute pour ajouter 1000 éléments, alors que Delphi 4 demandait moins d'une seconde pour le même travail). Heureusement, il y a un moyen de contourner ce problème, en utilisant les méthodes BeginUpdate et EndUpdate du sous-élément Items.
Voici le code que l'on tapait généralement sous Delphi 4 pour ajouter des éléments:
Code sous Delphi 4
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i := 0 to 1000 do begin TreeView1.Items.Add(nil, IntToStr(i)); end; end;
J'ai executé ce code montre en main sur un Pentium 233 MMX: le remplissage a pris 1 minute 08 secondes !!! Corrigeons maintenant ce problème, grâce à la méthode décrite ci-dessus:
Nouveau Code
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin try TreeView1.Items.BeginUpdate; for i := 0 to 1000 do begin TreeView1.Items.Add(nil, IntToStr(i)); end; finally TreeView1.Items.EndUpdate; end; end;
En reéxecutant le projet, le remplissage s'effectue désormais en moins d'une seconde !!! Magique, non ?
3 requête(s) SQL executée(s) en 0.001 Secs - Temps total de génération de la page : 0.011 Secs