ListView bloque trop d'items

L_art_ment Messages postés 302 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 6 février 2013 - 24 sept. 2008 à 11:16
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 - 2 oct. 2008 à 19:17
Bonjour, bonjour

J'ai une petit question à vous demander, je pense que la réponse n'est pas compliquée mais je ne parvient pas à la trouver de moi même

J'ai sur une form une ListView, quand je veux remplir ma ListView elle bloque (évidement je lui ajoute 100000 items)... Enfin je pense que c'est le nombre d'items que je veux lui faire avaler qui la fait bloquer pasqu'avec moins ca passe...

Auriez vous une petite méthode pour pallier à mon soucis s'il vous plait ? Là je ne trouve pô comment faire

Merci

<hr />
L'Armand joue, l'arme en joug... Mon site

7 réponses

L_art_ment Messages postés 302 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 6 février 2013
24 sept. 2008 à 13:54
   Bon et bien... J'ai trouvé un truc que je ne connaissais pas...

En ajouttant "ListView1.Items.BeginUpdate" au début de mes modifications et "ListBox1.Items.EndUpdate" à la fin, ca accélère un peu le procéssus, en fait ce n'est pas que ma ListBox se bloque, c'est qu'elle met excessivement de temps pour tout charger (plus de 10minutes, après 10minutes j'ai arrêté :x)...

Auriez vous une idée pour charger un fichier text très très volumineux et que ca prenne moins de temps ?

Merci pour votre aide

<hr />
L'Armand joue, l'arme en joug... Mon site
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 sept. 2008 à 15:23
pour tout ce qui est TStrings :

Strings.BeginUpdate;
try
  { code }
finally
  Strings.EndUpdate;
end;

<hr size="2" width="100%" />
0
L_art_ment Messages postés 302 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 6 février 2013
24 sept. 2008 à 15:45
Bein oui c'est ce que je fais déjà, mon code :

for i := 0 to StrList.Count - 1 do
    begin
    a:=pos('.',StrList[i]);
    dateheure:=DecodeDate(copy(StrList[i],0,a-1));
    ListView1.Items.BeginUpdate;
    with listView1.Items.Add do
        begin
        Caption := date;
        SubItems.Add(heure);
        end;
  ListView1.Items.EndUpdate;
  end;

StrList étant une StringListe contenant mes (100000) lignes que je veux ajouter à ma ListView mais en faisant quelques opérations sur la ligne entre deux...

Mais ca met quand même trois plombes...

<hr />
L'Armand joue, l'arme en joug... Mon site
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
29 sept. 2008 à 20:54
Si quelqu'un a un solution je suis preneur ! (Que 30 000 lignes)

J'ai mis un ProgressBar dans la boucle, et le plus évident, c'est que le chargement ralentit à partir de la moitié ...








J'ai essayé AllocBy sans succès flagrant ...








Ken@vo




<hr size="2" width="100%" />



Code, Code, Codec !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
L_art_ment Messages postés 302 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 6 février 2013
29 sept. 2008 à 22:03
Bein moi pour l'instant, la seule soluce que j'ai trouvé, c'est de n'afficher que 10000 items par 10000items, avec un genre de bouton "suivant" pour voir les 10000 prochains autres (ayant au préalable placé les lignes que je veux voir dans un StringList)...
Voilà mon systèm D, il doit bien y en avoir des plus efficaces

<hr />
L'Armand joue, l'arme en joug... Mon site
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
30 sept. 2008 à 23:20
Tu utilises effectivement BeginUpdate/EndUpdate dans ton code mais de manière incorrecte !
Relis bien la réponse de foxi et ça devrait te sauter aux yeux.

Au passage, salut mon cher Kenavo

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
2 oct. 2008 à 19:17
S
alut à toi Delphiprog ! Ravi de te croiser de temps en temps


Ken@vo

<hr size="2" width="100%" />




Code, Code, Codec !
0
Rejoignez-nous