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 :

Supprimer une ligne dans un TStringGrid [Débutant]


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut Supprimer une ligne dans un TStringGrid
    Bonjour,

    Je souhaite supprimer une ligne dans un TStringGrid en fonction de la position de la position du curseur.
    J'ai un code mais il me supprime toujours la ligne la plus en haut dans le StringGrid,
    Ce que je voudrais moi, c'est que si je clique sur le premier champ de la quatrième ligne par exemple, il me supprime bien la quatrième ligne intégralement...

    Voici le code que j'ai pour le moment:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
          int IndexLigne;
          int numLigne=0;
      for(IndexLigne=numLigne; IndexLigne<(AdvStringGrid1->RowCount-1); IndexLigne++)
      {
        AdvStringGrid1->Rows[IndexLigne] = AdvStringGrid1->Rows[IndexLigne+1];
      }
      AdvStringGrid1->RowCount--;
    }
    La suppression se déclenche quand je clique sur le bouton

  2. #2
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Regarde du coté de la fonction DeleteRow je crois que tu lui passes l'index de ta ligne et il l'a détruit

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Je trouve pas de fonction DeleteRow dans TStringGrid

  4. #4
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Autant pour moi DSL elle n'est pas accessible pour une TStringGrid, j'aurais du vérifier avant de poster

    J'ai vu que tu peux supprimer toutes les chaines pour une Row (En appelant Delete(IndexCols) sur une Row) mais après pour décaler tout ce qui suit je ne vois pas comment faire sinon de reconstruire complètement ta StringGrid en enlevant la Row en question.

    Il y a surement plus simple

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Yes, je vais attendre pour voir si d'autres membres ont une idée...

    C'est ça le problème quand on utilise un TStringGrid rempli à partir d'un fichier.txt, avec MYSQL il suffit d'une simple requête pour réactualiser le tableau...
    mais là je suis un peu dans le brouillard !!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Bon en fait, ça a l'air de marcher avec :
    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
     
    void __fastcall TForm1::AdvStringGrid1ContextPopup(TObject *Sender,
          TPoint &MousePos, bool &Handled)
    {
      int i;
      int nbLigne = AdvStringGrid1->Selection.Bottom - (AdvStringGrid1->Selection.Top-1);
      for(i=0; i<nbLigne; i++)
      {
        SupprimerLigne(AdvStringGrid1->Selection.Top,AdvStringGrid1);
      }
     
    }
    //---------------------------------------------------------------------------
     void TForm1::SupprimerLigne(int numLigne, TStringGrid * monStringGrid)
    {
      int IndexLigne;
      for(IndexLigne=numLigne; IndexLigne<(monStringGrid->RowCount-1); IndexLigne++)
      {
        monStringGrid->Rows[IndexLigne] = monStringGrid->Rows[IndexLigne+1];
      }
      monStringGrid->RowCount--;
    }
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
       SupprimerLigne(AdvStringGrid1->Selection.Top,AdvStringGrid1);
    }
    Mais faut que je le bosse car je l'ai trouvé et j'ai pas encore tout saisi

  7. #7
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour supprimer une ligne (ou une colonne) dans un StringGrid, la reponse est dans la FAQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      //déclaration d'une classe où DeleteRow est public
      class TPublicStringGrid: public TCustomGrid
      {
        public:
            using TCustomGrid::DeleteRow;
            using TCustomGrid::DeleteColumn;
      };
     // supprime la ligne n°2 (donc la troisième ligne, la première étant la ligne n°0) :
     ((TPublicStringGrid*)StringGrid1)->DeleteRow(2);
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

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

Discussions similaires

  1. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  2. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43
  3. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 14h45
  4. [C#] Comment supprimer une ligne dans DataGrid ?
    Par BAUDIER dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2004, 16h03
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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