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

Composants VCL Delphi Discussion :

Suppression de lignes dans un StringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    conducteur
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : conducteur

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 23
    Points
    23
    Par défaut Suppression de lignes dans un StringGrid
    bonsoir les pros
    Cela fait plusieurs jours que je rebute sur un problème si quelqu'un pouvait m'aider ce serait super
    merci d'avance
    voila le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    begin
    e:=0;z:=0;
    repeat
       e:=e+1;
                      if sgcombinaison.Cells[1,e]=(inttostr(tab[1])) then   inc(z);
                      if sgcombinaison.Cells[2,e]=(inttostr(tab[1])) then   inc(z);
                      if sgcombinaison.Cells[3,e]=(inttostr(tab[1])) then   inc(z);
                      if z=1 then sgcombinaison.Cells[4,e]:=inttostr(10)
      else    begin
                      Tpublicstringgrid(sgcombinaison).deleterow(e);                       
                  end;
                              z:=0;
                              until e=84;
    j'ai une stringgrid composée de 84 lignes et 4colonnes remplie de code à 3 chiffres.
    Or je souhaite conserver les lignes qui ont (par exemple) le chiffre(1) {tab[1]} dans le code
    le code Tpublicstringgrid(sgcombinaison).deleterow(e) fonctionne si je remplace la variable e par un chiffre mais
    pas dans mon code.Je precise que je débute en programmation (1mois) soyez indulgenthttp://www.developpez.net/forums/images/smilies/icon_razz.gif

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 885
    Points : 11 403
    Points
    11 403
    Billets dans le blog
    6
    Par défaut
    parcourir une liste du début à la fin en lui enlevant des lignes est dangereux : par exemple, on risque d'appeler une ligne d'indice disparu (ne fut-ce que la dernière).

    il est donc toujours préférable de parcourir la liste de la fin au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i:=sgcombinaison.RowCount-1 downto 0
    do begin
      if condition then 
        sgcombinaison.Cells[4,i]:=inttostr(10)
      else    
        Tpublicstringgrid(sgcombinaison).deleterow(i);    
    end;

  3. #3
    Membre à l'essai
    Homme Profil pro
    conducteur
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : conducteur

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 23
    Points
    23
    Par défaut
    merci tourlourou je vais adapter ton code
    D'avance merci
    bravo pour ta judicieuse analyse tourlourou
    ton code fonctionne houai!!!!!!!

  4. #4
    Membre actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 107
    Points : 237
    Points
    237
    Par défaut
    Bonjour,

    je vais aussi rajouter une couche :-)
    Je n'ai pas bien compris, tu veux supprimer les lignes si
    toutes les 4 conditions est fausse
    ou bien si au moins une est fausses ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    e:=0;z:=0;
    with sgcombinaison do 
       for z = rowcount-1 downto 1 do
       begin
          if  not Cells[1,z]=(inttostr(tab[1])) 
          and not Cells[2,z]=(inttostr(tab[1])) 
          and not Cells[3,z]=(inttostr(tab[1])) 
          and not Cells[4,z] =inttostr(10)
          then 
              deleterow(z);                       
       end;
    (downto 1 et non 0 car je pense que ta grille a une ligne fixe - de titre).
    là on supprime la ligne si toutes sont fausses
    si tu replace les and par des or, ce sera
    on supprime si au moins une est fausse.
    Bon courage.

    solilog

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

Discussions similaires

  1. Suppression de lignes dans un StringGrid
    Par ammapro dans le forum Delphi
    Réponses: 3
    Dernier message: 15/01/2015, 14h57
  2. Suppression de lignes dans un fichier
    Par bubu dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 11h36
  3. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 15h19
  4. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 01h57
  5. Multi lignes dans un StringGrids ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 28/11/2002, 00h15

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