IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[ListView] Doublons ListView


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut [ListView] Doublons ListView
    Bonjour,
    J'essaie de supprimer les doublons d'une listview en essayant de m'insipirer du code à l'adresse: ici
    Je n'y arrive pas.En fait je concatène tous mes élmnts d'une ligne de ma listview.Mais j'ai l'impression qu'il ne me supprime pas ce que je veux.
    Quelqu'un peut-il m'aider ou a-t-il un bout de code.

    Ci-dessous mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    procedure TForm1.SuppDoublonsListView1;
    var i,iEncours:integer;
        str : String;
        strlist:TStringList;f : TextFile;
    begin
        i := 0;
        strlist := TStringList.Create;//Assignfile(f,'C:\titi.txt');Rewrite(f);
        while i <= ListView1.Items.Count -1 do
        begin
          str := uppernoaccent(ListView1.Items.Item[i].Caption+ListView1.Items.Item[i].SubItems.Strings[0]+ListView1.Items.Item[i].SubItems.Strings[1]+ListView1.Items.Item[i].SubItems.Strings[2]+ListView1.Items.Item[i].SubItems.Strings[3]+ListView1.Items.Item[i].SubItems.Strings[4]);
          strlist.Add(str);
          //write(f,inttostr(i)+' '+str+#13);
          i := i+1;
        end;
        iEncours := strlist.Count -1;
        while iEncours >= 0 do
        begin
          while strlist.IndexOf(strlist.Strings[iEncours]) <> iEncours do
          begin
              ListView1.Items.Delete(strlist.IndexOf(strlist.Strings[iEncours]));
              dec(iEncours);
          end;
          dec(iEncours);
        end;
        strlist.Free;//CloseFile(f);
    end;

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 48
    Par défaut
    Bonjour,

    Essaie plutôt cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    procedure TForm1.SuppDoublonsListView1;
    var i,iEncours,iEncoursSearch:integer;
        str : String;
        strlist:TStringList;f : TextFile;
    begin
        i := 0;
        strlist := TStringList.Create;//Assignfile(f,'C:\titi.txt');Rewrite(f);
        while i <= ListView1.Items.Count -1 do
        begin
          str := uppernoaccent(ListView1.Items.Item[i].Caption+ListView1.Items.Item[i].SubItems.Strings[0]+ListView1.Items.Item[i].SubItems.Strings[1]+ListView1.Items.Item[i].SubItems.Strings[2]+ListView1.Items.Item[i].SubItems.Strings[3]+ListView1.Items.Item[i].SubItems.Strings[4]);
          strlist.Add(str);
          //write(f,inttostr(i)+' '+str+#13);
          i := i+1;
        end;
        iEncoursSearch := strlist.Count -1;
        while iEncoursSearch >= 0 do
        begin
          iEncours := iEncoursSearch;
          while iEncours >=0 do
          begin
            if strlist.Strings[iEncours]=strlist.Strings[iEncoursSearch] then
              ListView1.Items.Delete(iEncours);
            dec(iEncours);
          end;
          dec(iEncoursSearch);
        end;
        strlist.Free;//CloseFile(f);
    end;
    A+

  3. #3
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut
    Merci LoveBuzz.

    Cependant ca me crée une erreur EAccessViolation une fois que j'arrive à la fin.
    Pense tu savoir ce qui peut etre la cause.
    Merci.

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Je pense qu'il y a un problème ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        while iEncoursSearch >= 0 do
        begin
          iEncours := iEncoursSearch - 1;//Ici il faut ajouter -1
          while iEncours >=0 do
          begin
            if strlist.Strings[iEncours]=strlist.Strings[iEncoursSearch] then
              ListView1.Items.Delete(iEncours);
            dec(iEncours);
          end;
          dec(iEncoursSearch);
        end;
    Si tu laisses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iEncours := iEncoursSearch;
    le if suivant sera toujours vrai... Donc il effacera systématiquement la première entrée.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut
    Malheureusement ca ne marche toujours pas.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Citation Envoyé par mohamed
    Malheureusement ca ne marche toujours pas.
    Pourrais-tu être moins précis stp?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. [XL-2007] ListView sans doublon avec ajout
    Par Jojokun dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2012, 12h15
  2. [MVVM] Problème MAJ Listview de ListView
    Par mdordenart dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 16/05/2012, 10h26
  3. Listview sans doublons
    Par Kimaos dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/05/2009, 11h20
  4. [ListView]Supprimer les doublons
    Par mohamed dans le forum Composants VCL
    Réponses: 1
    Dernier message: 27/10/2005, 12h14
  5. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo