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 :

Insertion d'une ligne à l'index i dans un StringGrid


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut Insertion d'une ligne à l'index i dans un StringGrid
    Bonjour, je développe sous c++ builder 6. Je voudrai insérer une ligne à un index i voulu dans String Grid. Merci de m'aider.

  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
    Bonjour,
    voici le code à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void AjouterLigne(int numLigne,TStringGrid * monStringGrid)
    {
      int i ;
      monStringGrid->RowCount++ ;
      for(i=monStringGrid->RowCount;i>numLigne;i--){
        monStringGrid->Rows[i] = monStringGrid->Rows[i-1] ;
      }
    }
    Je n'ai pas tester ce code, il peut donc y avoir quelques modification à y apporter

  3. #3
    Membre Expert

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

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

    Il suffirait de dériver de TStringGrid.
    La déclaration peut se faire dans l'header de la fiche principale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class jStringGrid : public TStringGrid
    {
    private :
        __fastcall jStringGrid(TWinControl *AOwner);
    public :
     
        __fastcall ~jStringGrid();
        void __fastcall AddRow(int Index);
    };
    Cette classe ne peut jamais être instanciée (constructeur privé), mais peut néanmoins être utilisée lors d'un transtypage.
    Cela permet d'avoir accès à une méthode de TCustomGrid : MoveRow.

    Voila sa méthode (dans le .cpp de la fiche principale):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall jStringGrid::AddRow(int Index)
    {
    RowCount++;
    MoveRow(RowCount-1, Index);
    }
    On dispose de quelque chose de très simple à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
    {
    ( (jStringGrid*)StringGrid1 )->AddRow(3);
    }
    A plus !

  4. #4
    Membre éclairé
    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
    Par défaut
    Citation Envoyé par pottiez Voir le message
    Bonjour,
    voici le code à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void AjouterLigne(int numLigne,TStringGrid * monStringGrid)
    {
      int i ;
      monStringGrid->RowCount++ ;
      for(i=monStringGrid->RowCount;i>numLigne;i--){
        monStringGrid->Rows[i] = monStringGrid->Rows[i-1] ;
      }
    }
    Je n'ai pas tester ce code, il peut donc y avoir quelques modification à y apporter
    C'est possible d'avoir en quelques lignes une explication de ta boucler "for", je la pige pas trop, mais sinon ça marche bien chez moi...thanks

  5. #5
    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
    Bonjour,
    c'est très simple, monStringGrid->RowCount++ ; permet de rajouter une ligne au StringGrid
    ensuite la boucle for vas permettre de copié l'avant dernière ligne dans la dernière ligne, puis la ligne d'au dessus dans l'avant dernière ligne et ainsi de suite jusqu'à la ligne ou l'on voulais insérer la nouvelle ligne.
    Sinon la solution d'henderson est encore plus facile à utiliser je pense

  6. #6
    Membre éclairé
    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
    Par défaut
    Ok, je pense avoir saisi le principe. Simplement quand je fais un ajout, il me créé une nouvelle ligne avec à l'intérieur le nom des champs de mon TStringGrid ( par exemple Nom, Prenom ect )... comment on fait pour les enlever? j'imagine qu'il y a un clear() à mettre quelque part..


    Sinon, j'ai essayé la méthode d'henderson, que je comprend pas encore tout à fait mais elle marche

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

Discussions similaires

  1. [MySQL] Insertion d'une ligne et le sélectionner dans la même page
    Par Slim_Tunisien dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/10/2010, 19h00
  2. insertion d'une ligne dans un StringGrid
    Par ludojojo dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/06/2008, 21h26
  3. Ajax : insertion d'une ligne dans un tableau
    Par Flackou dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 26/05/2008, 13h50
  4. Insertion d'une Ligne dans MSFlexGrid
    Par Bib0ucH dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/12/2007, 12h12
  5. Réponses: 2
    Dernier message: 15/11/2007, 17h43

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