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 :

Peux ton simplifier du code


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut Peux ton simplifier du code
    bonjour

    j'aimerais savoir si il est possible de modifier cette partie de 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
            while(Connection_BD->TableSqlPal->Eof == false)
            {
                    EtatZone = Connection_BD->TableSqlPal->FieldByName("Etat")->Value;
                    // Champ a remplir
                    if(EtatZone == "Occupé")
                    {
                            NomZone = Connection_BD->TableSqlPal->FieldByName("Nom_ZoneP")->Value;
     
                            switch(NomZone)
                            {
                                    case 1:
                                    {
                                            BP1->Color = clRed;
                                            ShapeBP1->Brush->Color = clRed;
                                            break;
                                    }
     
                                    case 2:
                                    {
                                            BP2->Color = clRed;
                                            ShapeBP2->Brush->Color = clRed;
                                            break;
                                    }
                                    case 3:
                                    {
                                            BP3->Color = clRed;
                                            ShapeBP3->Brush->Color = clRed;
                                            break;
                                    }
                                    case 4:
                                    {
                                            BP4->Color = clRed;
                                            ShapeBP4->Brush->Color = clRed;
                                            break;
                                    }
                            }
     
                    }
                    Connection_BD->TableSqlPal->Next();
            }
    car de le switch je dois mettre 21 case logiquement.

    merci d'avance

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Tu peux faire des array de taille 21.
    Tu en fait une de BP, une de ShapeBP et une de (ou deux je sais pas trop) de Couleur. Ensuite ton code ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        BP[NomZone]->Color = Couleur[NomZone];
        ShapeBP[NomZone]->Brush->Color = Couleur[NomZone];

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut
    ok merci

    mais je comprend pas trop comment je fais mon test pour verifier si il faut mettre la couleur ??

    le nombre de ligne de code reste identique non ??

    merci de votre aide

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Dans le code que tu as mis plus haut tu ne fais pas de test, tu mets toujours de la couleur?

    Moi je te parle de faire une array comme celle-ci pour la couleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TColor Couleur[] = {clRed, clRed, clRed, clRed, clRed, clRed, clRed, clRed,
                        clRed, clRed, clRed, clRed, clRed, clRed, clRed, clRed,
                        clRed, clRed, clRed, clRed, clRed};
    Je ne sait pas si tes ShapeBPXX sont des TShape, si oui le code devrait être comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TShape *ShapeBP[] = {ShapeBP1, ShapeBP2, ShapeBP3, ShapeBP4, ShapeBP5, ShapeBP6,
        ShapeBP7, ShapeBP8, ShapeBP9, ShapeBP10, ShapeBP11, ShapeBP12, ShapeBP13,
        ShapeBP14, ShapeBP15, ShapeBP16, ShapeBP17, ShapeBP18, ShapeBP19, ShapeBP20,
        ShapeBP21};
    Ensuite tu n'as pas besoin de faire de switch/case. Tu fais simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            while(Connection_BD->TableSqlPal->Eof == false)
            {
                    EtatZone = Connection_BD->TableSqlPal->FieldByName("Etat")->Value;
                    // Champ a remplir
                    if(EtatZone == "Occupé")
                    {
                            NomZone = Connection_BD->TableSqlPal->FieldByName("Nom_ZoneP")->Value;
                            //BP[NomZone]->Color = Couleur[NomZone];
                            ShapeBP[NomZone]->Brush->Color = Couleur[NomZone];
     
                    }
                    Connection_BD->TableSqlPal->Next();
            }

  5. #5
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour les builderistes ...
    (ca fait bien longtemps que je n'étais pas passé par la)

    Est ce obligatoire de passer par des déclarations de tableaux ?
    On ne pourrais pas jouer avec FindComponent, sachant que l'on a une partie fixe pour le nom de l'objet apparement ("ShapeBP") et une partie dynamique( NomZone ).


    Comme décris ici quoi:
    http://cpp.developpez.com/faq/bcb/?p...mposantsdivers

    @+

  6. #6
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Voici ma contribution :

    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
     
     
    while(Connection_BD->TableSqlPal->Eof == false)
    {
       if( Connection_BD->TableSqlPal->FieldByName("Etat")->Value == "Occupé")
         {
            String cpIdx = Connection_BD -> TableSqlPal -> FieldByName("Nom_ZoneP") -> Value ;
     
            TPaintBrush *PBrushi = dynamic_cast <TPaintBrush*> (this -> FindComponent("BP" + cpIdx));
            TShape       *Shapei = dynamic_cast <TShape*>     (this -> FindComponent("ShapeBP" + cpIdx));
     
            if (Shapei != NULL && PBrushi !=NULL)
            {
                       PBrushi -> Color = clRed;
                       Shapei  -> Brush -> Color = clRed;
            }
          }
    }
    A noter

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

Discussions similaires

  1. qui peux m'expliquer ce code ligne par ligne merci
    Par superuser dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 08/04/2008, 11h25
  2. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05
  3. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15
  4. Réponses: 3
    Dernier message: 20/11/2006, 09h45
  5. Peux-ton fixer une limite d'upload / sec
    Par programmerPhil dans le forum Apache
    Réponses: 3
    Dernier message: 18/07/2006, 10h37

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