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 :

suppression multiple dans un StringGrid


Sujet :

C++Builder

  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 suppression multiple dans un StringGrid
    Bonjour,
    Apr�s la lecture du tutoriel de formation � C++ Builder, j'ai bien compris le fonctionnement de la suppression de ligne dans un StringGrid.
    Mon probl�me c'est que j'aimerai savoir comment supprimer plusieurs lignes dans ce tableau.
    Pour information j'ai un syst�me qui me permet de faire une s�lection multiple.

    De m�me, je pense qu'il serai int�ressant de rajouter quelque chose � ce tutoriel, c'est l'explication de la possibilit� de sauvegarder les donn�es comprises dans un StringGrid vers un fichier de type .csv par exemple.

    Merci pour vos r�ponses.
    Cordialement
    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
    Il te suffit pour cela de faire une boucle sur les coordonn�es de cellules s�lectionn�, disponible dans la propri�t� Selection de la StringGrid par exemple en reprenant la fonction de la FAQ :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    int i;
    for(i=StringGrid1->Selection.Left;i>=StringGrid1->Selection.Top;i--)
    {
      SupprimerLigne(i,StringGrid1);
    }
    Cela devrait fonctionner, je le fait de t�te.

  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
    J'ai un petit soucis, j'ai cr�� la fonction supprimer ligne

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     TForm1::SupprimerLigne(int numLigne, TStringGrid * monStringGrid)
    {
      int i;
      for(i=numLigne; i<(monStringGrid->RowCount-2); i++)
      {
        monStringGrid->Row[i] = monStringGrid->Row[i+1];
      }
      monStringGrid->RowCount--;
    }
    Mon probl�me c'est que j'ai un message d'erreur que je n'arrive pas � corriger(fig� sur la zone en gras).
    Pouvez vous m'expliquer et m'aider � r�soudre ce probl�me?

    [C++ Erreur] Unit1.cpp(254): E2062 Indirection incorrecte
    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
    Il y a une erreur qui c'est gliss� dans la FAQ, il faut mettre Rows � la place de Row :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    void SupprimerLigne(int numLigne,TStringGrid * monStringGrid)
    {
      int i ;
      for(i=numLigne;i<(monStringGrid->RowCount-2);i++){
        monStringGrid->Rows[i] = monStringGrid->Rows[i+1] ;
      }
      monStringGrid->RowCount-- ;
    }

  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
    Mon probl�me persiste je suis d�sol� pour ma faible capacit� � le r�soudre mais je commence vraiment avec le C++ et avec Builder
    Maintenant lorsque je fait appel � ma fonction de suppression plus rien de ne se passe.

    Je ne sais pas a quoi cela est du.
    voila mon code:

    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 __fastcall TForm1::StringGrid1ContextPopup(TObject *Sender,
          TPoint &MousePos, bool &Handled)
    {
     int i;
     for(i=StringGrid1->Selection.Left; i>=StringGrid1->Selection.Top; i--)
     {
      SupprimerLigne(i,StringGrid1);
     }
    }
     
    TForm1::SupprimerLigne(int numLigne, TStringGrid * monStringGrid)
    {
      int i;
      for(i=numLigne; i<(monStringGrid->RowCount-2); i++)
      {
        monStringGrid->Rows[i] = monStringGrid->Rows[i+1];
      }
      monStringGrid->RowCount--;
    }
    Est ce que c'est � cause du fait que je l'appel dans StringGrid1ContextPopup?
    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 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 de voir en mettant un point d'arr�t au niveau de la boucle for, et de voir quelle sont les valeurs de Selection, de i,...

  7. #7
    say
    say est d�connect�
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    1 176
    D�tails du profil
    Informations personnelles :
    �ge : 47
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 1 176
    Par d�faut
    tu peux d�j� essayer v�rifier que tes fonctions sont appel�s...
    un peu de debug quoi...

    ta fonction StringGrid1ContextPopup, est-elle appel�e?

  8. #8
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    23
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Par d�faut
    Salut

    Quand tu dis:
    Citation Envoy� par ludojojo Voir le message
    Maintenant lorsque je fait appel � ma fonction de suppression plus rien de ne se passe.
    Tu veux dire que tu n'as plus d'erreur � la compilation?

    Ton code fonctionne chez moi, et j'arrive � supprimer plusieurs lignes mais je suis �tonn� par quelques petites choses.

    ta fonction SupprimerLigne ne retourne aucune valeur, je mettrais donc un type void et pas rien du tout.

    Ton programme fait deux boucle for imbriqu�es avec la meme variable "i", ca marche car ce sont des fonctions diff�rentes mais ce n'est pas une habitude � prendre car ca pourrait te poser des probl�mes un jour, en plus au lieu d'une variable "i", ton code serait plus lisible si tu utilisais des noms comme indexLigne ou quelque chose dans le style.

    Je trouve surtout bizarre la ligne :
    Citation Envoy� par ludojojo Voir le message
    for(i=StringGrid1->Selection.Left; i>=StringGrid1->Selection.Top; i--)
    Je ne comprend pas ce que tu as voulu faire en �crivant cette ligne, car cela supprime un nombre de ligne qui d�pend de la propri�t� left de la s�lection. c'est � dire que si je selectionne des cases en bas � gauche de mon TStringGrid, ma propri�t� Left sera inf�rieure � la propri�t� Top, et donc aucune ligne ne sera supprim�e.

    Bon courage

  9. #9
    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
    Citation Envoy� par moudel Voir le message
    Je trouve surtout bizarre la ligne :

    Je ne comprend pas ce que tu as voulu faire en �crivant cette ligne, car cela supprime un nombre de ligne qui d�pend de la propri�t� left de la s�lection. c'est � dire que si je selectionne des cases en bas � gauche de mon TStringGrid, ma propri�t� Left sera inf�rieure � la propri�t� Top, et donc aucune ligne ne sera supprim�e.

    Bon courage
    Cette ligne c'est moi qui l'ai donn� plus haut, et j'avais pr�venu que j'avais fait de t�te, et effectivement je me suis tromp�, il faut remplac� Left par Bottom

  10. #10
    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
    J'ai suivi vos conseils, mais mon soucis reste persistant, mais avance.
    En effet mon probl�me maintenant c'est que j'arrive bel et bien � supprimer une ligne, mais pas plusieurs.
    J'ai modifier mon code comme ceci pour plus de claret�e comme vous me l'avez pr�conis�.
    voila :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TForm1::SupprimerLigne(int numLigne, TStringGrid * monStringGrid)
    {
      int IndexLigne;
      for(IndexLigne=numLigne; IndexLigne<(monStringGrid->RowCount-2); IndexLigne++)
      {
        monStringGrid->Rows[IndexLigne] = monStringGrid->Rows[IndexLigne+1];
      }
      monStringGrid->RowCount--;
    }
    Pour faire appel � la fonction en fait je fait un clic droit dans mon StringGrid.
    En fait le but premier de l'op�ration �tait de mettre un menue contextuel qui permettrai de choisir des options pour supprimer ajouter �diter...etc.

    Je n'ai toujours que la derni�re ligne s�lectionn�e qui est effac�e.

    Merci pour votre aide
    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

  11. #11
    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
    Est-ce que, du fait que tu fasse un clique droit, cela ne perdrais pas la s�lection ?

  12. #12
    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
    oui en effet ma s�lection disparait.
    Qu'elle est la solution? Je ne peut pas passer par un menu contextuel?
    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

  13. #13
    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
    Je viens de tester, voici le code exacte que j'ai utilis� et cela as fonctionn� :

    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
    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::StringGrid1ContextPopup(TObject *Sender,
          TPoint &MousePos, bool &Handled)
    {
      int i;
      int nbLigne = StringGrid1->Selection.Bottom - (StringGrid1->Selection.Top-1);
      for(i=0; i<nbLigne; i++)
      {
        SupprimerLigne(StringGrid1->Selection.Top,StringGrid1);
      }
    }

  14. #14
    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
    Je suis vraiment dsl mais cela me pose encore un probl�me.
    Je m'explique en fait lorsque je fait une s�lection multiple, j'ai bien un affichage qui modifie les lignes s�lectionn�es, et les repeint en bleu.
    Cela dit j'ai toujours la derni�re case que je s�lectionne qui est entour�e de petits pointill�s. Je pense que cela fait partie des propri�t�es de la StringGrid.
    seule la ligne comprenant cette case (case en pointill�) est supprim�e.

    Je peux vous envoyer mes fichier si vous le souhaitez. mais dites moi les quels vous sont utiles?
    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

  15. #15
    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
    Voila je vous joins mon dossier, je pense que vous avez tout ce qu'il faut dedans.
    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

  16. #16
    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
    J'ai trouv� d'o� viens ton probl�me, tu as tes cellules �ditable dans ta grille, ce qui annule le fait de pouvoir faire la multis�lection

  17. #17
    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
    Quelqu'un � une id�e d'o� peux venir mon probl�me?
    J'ai penser que peut �tre si j'arrivai � cr�er un menu contextuel correct avec diff�rents choix possibles, peut �tre que mon probl�me serai r�solu, mais je n'ai sais pas trop comment m'y prendre.
    Si quelqu'un � une id�e...

    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

  18. #18
    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
    Malgr� la suppression de la possibilit� d'�dition des cellules, le probl�me persiste
    J'ai modifi� le "goEditing" de ma grid pour le mettre a false.
    Est ce que c'est une autre propri�t� a modifier?
    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

  19. #19
    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
    Comme je l'ai dit juste avant, le fait que tu met tes cellule en �ditable, c'est � dire comme tu as mis l'option goEditing, cela annule l'option de s�lection multiple (goRangeSelect), du coup tu ne pourra jamais supprimer plusieurs ligne en m�me temps

    [Edit]grill�

  20. #20
    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
    J'ai modifier "GoEdit" il est donc a false
    Je devrai donc normalement pouvoir utiliser cette fonction.
    Sans succ�s.

    Ya t'il une autre op�ration � effectuer?
    Images attach�es Images attach�es  
    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

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. Suppression multiple dans DBGrid en Interbase
    Par masterdash dans le forum Bases de donn�es
    R�ponses: 11
    Dernier message: 07/11/2012, 10h14
  2. suppression multiple dans form
    Par evevev dans le forum Langage
    R�ponses: 2
    Dernier message: 15/10/2011, 06h48
  3. [JavaScript] Suppression des multiples dans un tableau (array) alphanum�rique
    Par danielhagnoul dans le forum Contribuez
    R�ponses: 0
    Dernier message: 07/06/2011, 11h40
  4. suppression multiple dans un treeview
    Par tomkiki dans le forum Delphi
    R�ponses: 6
    Dernier message: 09/05/2007, 15h30

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