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

Delphi Discussion :

Problème avec 2 blocs IF dans une procedure


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Problème avec 2 blocs IF dans une procedure
    bonjour tout le monde,
    Voila mon problème, j'ai une procedure dans mon code pour trier les données d'un StringGrid vers des CheckBox et des Edit.
    Enfin bref, quelque ligne sont comme cour-circuité

    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
     
    procedure TForm3.Display_start_data;
    begin
        IF StringGrid2.Cells[0,StringGrid1.Selection.BottomRight.Y-1]='1' then
        begin
          CheckBox1.Checked:=TRUE;
          Edit1.Text:=StringGrid2.Cells[1,StringGrid1.Selection.BottomRight.Y-1];
          Edit1.Visible:=TRUE;
        end;
     
        IF StringGrid2.Cells[2,StringGrid1.Selection.BottomRight.Y-1]='1' then
        begin
          CheckBox3.Checked:=TRUE;
          Edit3.Text:=StringGrid2.Cells[3,StringGrid1.Selection.BottomRight.Y-1];
          Edit9.Text:=StringGrid2.Cells[4,StringGrid1.Selection.BottomRight.Y-1];
          Edit3.Enabled:=TRUE;
          Edit3.Visible:=TRUE;
          Edit9.Enabled:=TRUE;
          Edit9.Visible:=TRUE;
        end;
    end;
    Si je suprime l'un des bloques IF l'autre fonctionne. En utilisant le debug ligne par ligne j'ai vu que lorsque le programme arrive ou millieu du second bloque, les données du premier ce met à 0

    Avez-vous une idée pour résoudre mon problème?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 58
    Points : 44
    Points
    44
    Par défaut
    J'ai pas tout compris qu'est ce que tu appelles les données???

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    par exemple Edit1.Text='jour'

    avec le mode debug, dés que le programme arrive au second bloc Edit1.Text prend la valeur nul, Edit1.Text=''

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 58
    Points : 44
    Points
    44
    Par défaut
    T'aurais pas implementer OnChange() de Edit3 ou Edit9 par hasard?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    non

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Faudrait savoir :
    dés que le programme arrive au second bloc
    ou ?
    lorsque le programme arrive ou millieu du second bloque
    Dans le premier cas si la cellule est vide c'est normal.
    Dans le second cas c'est mystérieux, ...
    Mes 2 cts,
    --
    jp

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Quand je dit :
    dés que le programme arrive au second bloc
    Sa veu bien dir se que sa veu dire, et quand je dit

    lorsque le programme arrive ou millieu du second bloque
    c'est pour présisé ou sa çe passe dans le second bloc
    et pour plus de précision c'est à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit3.Text:=StringGrid2.Cells[3,StringGrid1.Selection.BottomRight.Y-1];

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Donc la question est; il y a t'il une erreur de syntaxe dans mon code ou Delphi (2006) bug?

  9. #9
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Juste comme ça en apssant : quelle est l'erreur renvoyée ?

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Il y a pas d'erreur renvoyée

  11. #11
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    La procedure Display_Start_Data n'est-elle pas appelée par un événement qui résulterait de sa propre éxécution (par exemple, un onchange sur un Tedit.text modifié) ?

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    oui c'est sur l'événement StringGrid1Click qui éxécute la procedure.
    Dans la procedure, je li les données via IF de StringGrid1 d'où est venu l'événement click.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    j'ai trouvé une solution pour mon problème, enfin j'ai trouvé la cause;
    dans le code générale une procedure CheckBox1Click initialisé mes variables.
    Erreur de débutant, et sur un programme de plus de 2000 ligne c pas toujour facille. enfin on aprend de ces erreurs, c'est le principal.

    Je tien a remercier ceux qui on tanté de donnée une solution.

    Bonne soirée

    Asgard.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Juste pour info, l'événement CheckBox1Click lance sa procedure avec le click de la sourie ET la commande CheckBox1.Checked:=TRUE ou FALSE.

  15. #15
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par asgard
    Juste pour info, l'événement CheckBox1Click lance sa procedure avec le click de la sourie ET la commande CheckBox1.Checked:=TRUE ou FALSE.
    houlala... à éviter, encore faut-il le savoir (en tout cas c'est vrai jusqu'en Delphi 7, à vérifier pour les autres Delphi)

    Voici quelques lignes de code à tester de toute urgence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure Form1.CheckBox1Click(Sender:TObject);
    begin
      case CheckBox1.Checked of
        true:showmessage('cochée');
        false:showmessage('décochée');
      end;
    end;
    à comaprer avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure Form1.CheckBox1Click(Sender:TObject);
    begin
      case CheckBox1.State of
        cbChecked:showmessage('cochée');
        CbUnChecked:showmessage('décochée');
      end;
    end;
    Dans le premier cas, si vous cochez la case, Delphi vous dira que la case est décochée ! Pourquoi ? parce que la propriété checked est mise à jour après le déclenchement de l'évènement OnCheck... C'est nul et piégeant mais il faut le savoir.

    Du coup, pour contourner le problème, il vaut mieux tester la propriété State de la Checkbox (qui peut être égale à cbChecked, cbGrayed ou cbUnChecked), qui elle, est bien mise à jour avant le déclenchement de l'évènement

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/12/2007, 23h20
  2. Problème avec la multi-sélection dans une zone de liste
    Par Mimisio dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/07/2007, 16h23
  3. [SQL] Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/08/2006, 13h28
  4. Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/08/2006, 13h21
  5. [VB6] Problème avec la touche 0 dans une MaskEdBox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/03/2006, 09h47

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