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.005 Secs