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 :

chercher le contenu de edit dans plusieur StringGrid


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut chercher le contenu de edit dans plusieur StringGrid
    bonjour
    mon probleme c'est de chercher le contenu de Edit dans les lignes de la premier colonne de 12 StrinGrid .est ce que c'est possible?
    merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut, pour lire tout les TStringGrid fait qqchose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        for ( int x=0 ; x<ComponentCount ; x++)
        {
             if (Components[x]->ClassNameIs("TStringGrid"))
             {
                TStringGrid *StringGrid = dynamic_cast<TStringGrid *>(Components[x]);
                // ICI tu utilises StringGrid pour accéder à sa première colonne
             }
        }

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par défaut
    Salut !

    Je vais supposer que les TStringGrid appartiennent à Form1.

    En global :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TList *MyGrids = new TList;
    Dans le constructeur de TForm1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for(int j = 0; j < ComponentCount; j++)
        {
        if(Components[j]->ClassNameIs("TStringGrid"))
            {
            MyGrids->Add(Components[j]);
            }
        }
    Ce qui permet donc d'avoir la liste des StringGrid à l'exécution pendant toute la durée du programme.
    Il est bien entendu possible de les mettre en liste lors d'une création dynamique d'objets.
    On saurait faire aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TStringGrid *StringGrid = new TStringGrid(this);
    StringGrid->Parent = this;
    MyGrids->Add(StringGrid);
    Si les StringGrids sont éparpillés un peu partout, dans d'autres fenêtres, dans ce cas il faudrait procéder manuellement pour chacune d'elles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //En global dans l'unité des autres forms
    extern TList *MyGrids;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Dans le constructeur d'une form
    MyGrids->Add(StringGrid1);
    L'intérêt dans tout ça, c'est bien évidemment de ne plus avoir à les rechercher !

    Maintenant pour aller chercher l'information par colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TStringGrid *Target;
    for(int j = 0; j < MyGrids->Count; j++)
        {
        Target = (TStringGrid*)MyGrids->Items[j];
        if(Target->Cols[0]->IndexOf(Edit1->Text) != -1 )
            {
            }
        }
    On pourrait bien sûr utiliser Cells ... et tout dépend de ce que l'on doit faire au juste !

    Ne pas oublier de libérer MyGrids dans la OnClose de Form1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MyGrids->Clear();
    delete MyGrids;
    A plus !

  4. #4
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Je suppose que tes StringGrid sont sur la même fiche Form1 :

    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
     
     
     
    for ( int comp = 0 ; comp < ComponentCount ; comp++)
    {
             if (Form1 -> Components[comp] ->ClassNameIs("TStringGrid"))
             {
                TStringGrid *StrGrd = dynamic_cast<TStringGrid *>(Components[comp]);
     
                for(int i = 0 ; i < StrGrd -> RowCount ; i++)
                if(StrGrd -> Cells[0][i] == Edit1 -> Text)
                  {
                    // A FAIRE CE QUE TU VEUX
                    ...
                    ...
                   }
             }
    }

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    Bonjour
    j'ai un petit probleme, mes StringGrid sont sur la meme fiche2 et meme les rèsultats de travail sur la fiche 2, le boutton qui èxecute ce code dans la fiche 3 , le code ne fonctionne pas part contre si je le met dans la fiche 2 il marche bien, et je ne sais pas ou est le probleme
    merci d'avance pour votre aide

  6. #6
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Si tu utilise le code que je t'ai proposé :

    Dans la fiche3 il faut ajouter l'entete de la fiche2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    #include "fiche3.h"

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

Discussions similaires

  1. [XL-2007] Compiler contenu feuille identique dans plusieurs fichiers vers une seule feuille
    Par julie.b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/10/2014, 14h33
  2. [Débutant] Enregistrer le contenu de plusieurs Edit dans un fichier .txt
    Par coxycross dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/06/2012, 10h28
  3. Réponses: 19
    Dernier message: 14/04/2007, 11h44
  4. Editer ou non une cellule dans une stringGrid ?
    Par jamah dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/03/2006, 17h52
  5. utilisation du contenu d'un champ edit dans une requete sql
    Par amri2006 dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/01/2006, 16h05

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