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

Langage Delphi Discussion :

renseigner l'ensemble cellules stringGrid


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Points : 21
    Points
    21
    Par défaut renseigner l'ensemble cellules stringGrid
    Bonsoir,
    svp, c'est encore moi, est ce que c'est possible de tester toutes les cellules d'un stringGrid si sont renseignées ou non. (entier)
    mon problème à moi, c'est que je veux afficher un boutton pour calcul q'une fois que toutes les cellules (Stringgrid sont renseignées).
    merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut renseigner l'ensemble cellules stringGrid
    bonjour,

    vous aurez peut être besoin d'une procédure qui ressemble à ceci

    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
     var
      I, J : Integer;
      M : boolean;         
    begin
      m := true;   // variable qui nous permettra de détecter si une case renseignée
      with StringGrid1 do
        for I := 0 to ColCount - 1 do
          for J:= 0 to RowCount - 1 do
            begin
              if trim(Cells[I,J]) <> '' then    // si une case n'est pas vide
              begin
               m:=false;
               exit
              end;
            end;
            if m then button1.visible:=true else button1.visible:=false;
    cette procédure peut etre dans un évenement quelconque (ONEXIT du stringGrid lui meme par exemple,) ou onclic d'un bouton etc...

    Voilà, c'est une idée qui m'est venue à l'esprit, j'espère qu'elle vous aidera,
    bonne continuation.

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par camatchou Voir le message
    bonjour,

    vous aurez peut être besoin d'une procédure qui ressemble à ceci

    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
     var
      I, J : Integer;
      M : boolean;         
    begin
      m := true;   // variable qui nous permettra de détecter si une case renseignée
      with StringGrid1 do
        for I := 0 to ColCount - 1 do
          for J:= 0 to RowCount - 1 do
            begin
              if trim(Cells[I,J]) <> '' then    // si une case n'est pas vide
              begin
               m:=false;
               exit
              end;
            end;
            if m then button1.visible:=true else button1.visible:=false;
    cette procédure peut etre dans un évenement quelconque (ONEXIT du stringGrid lui meme par exemple,) ou onclic d'un bouton etc...

    Voilà, c'est une idée qui m'est venue à l'esprit, j'espère qu'elle vous aidera,
    bonne continuation.
    4 remarques :

    1- Le nom de la variable m c'est pas terrible (surtout si quelqu'un passe derrière), il vaut mieux la nommer correctement, par exemple : bTouteCaseRemplie
    2- Inutile de commencer le parcours à 0 de la StringGrid (est-ce bien utile de tester l'entête de colonne (Si on a des FixedCols ou FixedRows)
    3- le test if m à la fin ne sert à rien à cause du Exit qui sort de la procédure et n'y passe même pas. dans ce cas il vaut mieux utiliser une boucle while.
    4- Les if then else sur une ligne sont une catastrophe pour le débugage, comment savoir en pas à pas si on est passé dans le then ou dans le else.

    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
     var
      I, J : Integer;
      bTouteCaseRemplie: boolean;         
    begin
      bTouteCaseRemplie:= true;   // variable qui nous permettra de détecter si une case renseignée
      with StringGrid1 do
      begin
        i := FixedCols;
        While (i <= ColCount -1) and bTouteCaseRemplie do
        begin
          j := FixedRows;
          While (j <= Rowcount -1) and bTouteCaseRemplie do
          begin
            bTouteCaseRemplie := (trim(Cells[I,J]) <> '');
            inc(j);
          end;
          inc(i);
        end;
      end;
     
      button1.visible:=bTouteCaseRemplie;

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut renseigner l'ensemble cellules stringGrid
    ok Rayek,

    je prendrai en compte et avec plaisir les quatres observations.

    Merci beaucoup

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 532
    Points
    13 532
    Par défaut
    Oui mais là, ça ne teste que la dernière case
    L'Exit est mieux puisqu'il nous permet de sortir dès l'erreur rencontrée !

    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
    var
      x,y   : Integer;
      Value : Integer;
     
    begin
      with StringGrid1 do
        for x := FixedCols to ColCount -1
          for y := FixedRows to RowCount -1
            if not TryStrToInt(Cells[x,y], Value) then
            begin
              Button1.Enabled := FALSE;
              Exit;
            end;
     
      Button1.Enabled := TRUE;
    end;
    Edit: Oops, j'avais zappé le AND...

  6. #6
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Points : 21
    Points
    21
    Par défaut Par défaut renseigner l'ensemble cellules stringGrid
    Bonsoir,
    merci mes amis pour vos réponses
    je m'excuse pour l'absence " problèmes de connexion"
    en fait j'ai pris connaissance de vos réponses qui répondent exactement à mes besoins, sauf que pour compléter le besoin, je souhaiterai que lorsque je termine la saisie le button s'affiche systématiquement.
    merci d'avance.

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    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 879
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    6
    Par défaut
    mon problème à moi, c'est que je veux afficher un boutton pour calcul q'une fois que toutes les cellules (Stringgrid sont renseignées).
    sauf que pour compléter le besoin, je souhaiterai que lorsque je termine la saisie le button s'affiche systématiquement.
    Donc, pour compléter le besoin de n'afficher un bouton que conditionnellement, il faut l'afficher systématiquement ?

    A quoi sert donc le test de complétude de la grille dans ce cas ?

    Par surcroît, ce n'est pas un exploit de programmation d'y parvenir, si tu as compris les codes proposés

  8. #8
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Points : 21
    Points
    21
    Par défaut Par défaut renseigner l'ensemble cellules stringGrid
    re bonsoir,
    merci pour la réponse
    oui j'ai testé le button ne s'affiche pas une fois que la saisie est terminé.
    pardon je suis pas un spécialiste en delphi c'est mes débuts
    merci
    pour votre aide

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    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 879
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    6
    Par défaut
    Il est bon que le bouton soit seulement autorisé (Enabled) par la condition.
    Mais il faut qu'il soit visible dès le début, effectivement.

    Donc, dès que tu crées la grille de saisie, il faut afficher le bouton grisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Button1.Enabled:=False;
    Button1.Show;
    StringGrid1.Show;
    et permettre de cliquer dessus dès que la grille est remplie, cf. code de Andnotor

  10. #10
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Points : 21
    Points
    21
    Par défaut Par défaut renseigner l'ensemble cellules stringGrid
    Bonsoir
    merci pour votre réponse.
    ça ne marche toujours pas comme je le souhaites.
    voilà ce les lignes de commandes :
    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
    28
    29
    var
      x,y   : Integer;
      Value : Integer;
     
    begin
      with StringGrid1 do
        for x := stringgrid1.FixedCols to stringgrid1.ColCount -1  do
          for y := stringgrid1.FixedRows to stringgrid1.RowCount -1  do
            if not TryStrToInt(Cells[x,y], Value) then
            begin
              Button1.Visible  := false;
              Exit;
            end;
      Button1.Visible := true;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Button1.Enabled:=true;
    Button1.Show;
    StringGrid1.Show;
       button1.Caption :='chargementremière '+#13+'autres';
     
    end;
     
    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in [#8,'0'..'9',Decimalseparator,',']) then
    key := #0;
    end;

  11. #11
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    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 879
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    6
    Par défaut
    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
    28
    29
    var
      x,y   : Integer;
      Value : Integer;
     
    begin
      Button1.Enabled := true; 
      with StringGrid1 do
        for x := stringgrid1.FixedCols to stringgrid1.ColCount -1  do
          for y := stringgrid1.FixedRows to stringgrid1.RowCount -1  do
            if not TryStrToInt(Cells[x,y], Value) then
            begin
              Button1.Enabled  := False;
              Exit;
            end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Button1.Enabled:=False;
      Button1.Show;
      StringGrid1.Show;
      Button1.Caption :='chargementremière '+#13+'autres';
    end;
     
    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in [ #8, '0'..'9', DecimalSeparator, ',' ]) then
      key := #0;
    end;

Discussions similaires

  1. formatage d'un text dans une cellule stringgrid en float
    Par iam dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2006, 15h05
  2. changer de couleur dans une cellule stringgrid
    Par popy1970 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/04/2006, 20h21
  3. Bord de couleur pr une cellule StringGrid ou AdvStringGrid
    Par gazier20 dans le forum Composants VCL
    Réponses: 12
    Dernier message: 05/02/2006, 03h00
  4. Comment insérer un ComboBox dans un cellule StringGrid
    Par Xavier dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/01/2006, 11h36
  5. Couleur cellule stringgrid sur condition...
    Par kobe dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/08/2005, 13h49

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