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

C++Builder Discussion :

tri StringGrid chaine de caractère


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut tri StringGrid chaine de caractère
    Bonjour,
    Après de nombreuses recherches, je n'ai pas trouvé de solution pour pouvoir trier un StringGrid. rempli de chaine de caractère.
    J'aimerai pouvoir avoir une fonction un peut comme sous Excel qui me permet en fonction de la colonne choisi pouvoir trier l'ensemble du tableau.
    J'arrive à le faire avec des nombres, mais impossible avec des chaines de caractères...

    Quelqu'un connait'il une solution qui pourrais me permettrai de faire une fonction de ce type?

    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye la fonction AnsiCompare

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Voici le code que j'ai commencé à créer!

    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
    int Debut = 1; //pour décalage du aux entetes
    int Colonne = StringGrid->ColCount-1;
    AnsiString S;
     
    for (int i = Debut;i < StringGrid->RowCount-1;i++)//parcours des lignes
     {
      for (int j = (i+1); j < StringGrid->RowCount;j++)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][i] & StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    Mais cela ne modifie en rien mon Tableau...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Pour moi ça devrait plutôt être ceci mais je n'ai pas essayé :

    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
    int Debut = 1; //pour décalage du aux entetes
    int Colonne = StringGrid->ColCount-1;
    AnsiString S;
     
    for (int i = Debut;i < StringGrid->RowCount-1;i++)//parcours des lignes
     {
      for (int j = (i+1); j < StringGrid->RowCount;j++)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    De plus la tu fait un tri sur la dernière colonne, je sais pas si c'est bien sur cette colonne que tu veut trier

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    félicitation!!
    Merci je ferais une fonction qui permet de choisir le sens du tri... et je la mettrai en ligne pour ceux qui on besoin.

    Merci encore
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  6. #6
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    comme promis voici les deux fonctions de tri, dans les deux sens de A à Z et de Z à A...

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    void __fastcall TForm_Tab_Clients::TrierlacolonneAZ1Click(TObject *Sender)
    {
    int Fin = StringGrid->RowCount;; //pour décalage du aux entetes
    int Colonne = StringGrid->Selection.Left;
    AnsiString S;
     
    for (int i = Fin;i > 1;i--)//parcours des lignes
     {
      for (int j = (i-1); j > 0 ;j--)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    Aff_Num_Ligne();
    }
     
     
    void __fastcall TForm_Tab_Clients::TrierlacolonneZAClick(TObject *Sender)
    {
    int Debut = 1; //pour décalage du aux entetes
    int Colonne = StringGrid->Selection.Left;
    AnsiString S;
     
    for (int i = Debut;i < StringGrid->RowCount-1;i++)//parcours des lignes
     {
      for (int j = (i+1); j < StringGrid->RowCount;j++)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
     Aff_Num_Ligne();
    }
    La fonction Aff_Num_Ligne(); ne sert qu'à réactualisé les numéros de ligne...
    Bon courage à tous!
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

Discussions similaires

  1. Programme de tri de chaine de caractères
    Par vetchang dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2008, 17h26
  2. Tri de chaine de caractère avec fgets
    Par clampin dans le forum Débuter
    Réponses: 4
    Dernier message: 16/05/2008, 22h42
  3. Comparaisons et tri des chaines de caractère.
    Par liliemmy dans le forum SQL
    Réponses: 2
    Dernier message: 01/04/2008, 17h52
  4. code de filtre et tri des chaines de caractères
    Par fatenatwork dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 12/03/2008, 16h31
  5. Réponses: 17
    Dernier message: 16/12/2005, 09h45

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