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

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : avril 2008
    Messages : 508
    Points : 100
    Points
    100

    Par défaut Comment éviter les doublons dans TComboBox ?

    Bonjour,

    dans mon application, j'utilise un composant ComboBox qui liste les 6 premiers caractères des fichiers d'un répertoire.
    Mon soucis est qu'il y a des doublons et j'aimerai savoir comment supprimer ces doublons ???

    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
     
    __fastcall TFormParametresSeuils::TFormParametresSeuils(TComponent* Owner)
    	: TForm(Owner)
    {
        AnsiString RepertoireApplication = ExtractFilePath(Application->ExeName);
    	AnsiString NumSerie = FormParametresSeuils->EditNumSerie->Text;
    	AnsiString nom = RepertoireApplication+"\\repertoire\\";
     
     
    	Extensions = new TStringList;
    	Extensions->Add(".txt");
    	Search (nom, Extensions, FormParametresSeuils->ComboBoxNumSerie->Items);
        delete Extensions;
     
    }
    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
     
    void TFormParametresSeuils::Search(AnsiString FilePath, TStringList * Extensions, TStrings * ListeFichiers)
    {
    	TSearchRec Infos_fichier;
    	if (!FindFirst(FilePath+"*.txt", faAnyFile, Infos_fichier))
    	do
    	{
    		for (int i = 0 ; i < Extensions->Count ; i++)
    		{
    			if (ExtractFileExt(Infos_fichier.Name).LowerCase() == Extensions->Strings[i].LowerCase())
    			{
     
    				ListeFichiers->Add((Infos_fichier.Name.Delete(7,20)));
    			}
    		}
    	}
    	while(!FindNext(Infos_fichier));
    	FindClose(Infos_fichier);  
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2002
    Messages : 519
    Points : 523
    Points
    523

    Par défaut

    Tu peux utiliser ce code à la place de Delete. Je en suis pas sur de l'indice (c'est 0 ou 1) pour ne pas avoir de problème si un fichier porte un nom trop long.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Infos_fichier.Name.SubString(1,6)
    ensuite, avant de l'ajouter à ta liste, il faut parcourir toute ta liste pour vérifier si cet item existe déja avec u for par esxemple a moins qu'une fonction de recherche existe sur avec les TStringList.

  3. #3
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    888
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 888
    Points : 455
    Points
    455

    Par défaut

    Lorsque tu construit ton ComboBox, tu peux faire ceci pour tester si un Item existe déjà

    [code]
    ComboBox->Items->IndexOf("chaine de l'item que tu veux ajouter")
    [code]

    cette fonction te renvois -1 si l'item n'existe pas, l'indice du premier Item rencontré s'il existe déjà.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : avril 2008
    Messages : 508
    Points : 100
    Points
    100

    Par défaut

    Merci beaucoup, j'ai réussi à faire ce que je souhaitai !!!

    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
     
    void TFormParametresSeuils::Search(AnsiString FilePath, TStringList * Extensions, TStrings * ListeFichiers)
    {
    	TSearchRec Infos_fichier;
    	if (!FindFirst(FilePath+"*.txt", faAnyFile, Infos_fichier))
    	do
    	{
    		for (int i = 0 ; i < Extensions->Count ; i++)
    		{
    			if (ExtractFileExt(Infos_fichier.Name).LowerCase() == Extensions->Strings[i].LowerCase())
    			{
    				int Doublon = FormParametresSeuils->ComboBoxNumSerie->Items->IndexOf(Infos_fichier.Name.Delete(7,20));
    				if (Doublon == -1)
    				{
                    	ListeFichiers->Add((Infos_fichier.Name.Delete(7,20)));
    				}
     
     
    			}
    		}
    	}
    	while(!FindNext(Infos_fichier));
    	FindClose(Infos_fichier);  
    }
    A bientôt !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment éviter les doublons dans une ComboBox
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/07/2017, 16h03
  2. Comment éviter les doublons dans access
    Par colorid dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/07/2011, 11h45
  3. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12
  4. Comment éviter les doublons dans ma table
    Par einegel dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/11/2004, 12h18
  5. Éviter les doublons dans une requete
    Par royrremi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2004, 19h37

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