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 :

Modifier les propriétés d'un TShape à l'aide d'une variable


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Modifier les propriétés d'un TShape à l'aide d'une variable
    Bonjour,

    Je cherche à faire une boucle pour modifier la couleur de plusieurs TShape, mais je ne sais pas comment on peux faire en utilisant une variable.

    Mon bout de code sera plus parlant :

    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
     
    rep_trame[0]=0xAA;
     
    char j=0x01;
    if (rep_trame[0]&j) i0->Brush->Color=clLime;
    else i0->Brush->Color=clMaroon;
    j*=2;
    if (rep_trame[0]&j) i1->Brush->Color=clLime;
    else i1->Brush->Color=clMaroon;
    j*=2;
    if (rep_trame[0]&j) i2->Brush->Color=clLime;
    else i2->Brush->Color=clMaroon;
    .
    .
    .
    voila c'est très simple:
    i0,i1,i2,....in sont le nom de petites leds en Tshape et il y en a un nombre n.
    Et rep_trame[] constitue l'état des leds, donc si le bit 0 est à 1 alors la led i0 sera verte, etc ...

    Comment je peux remplacer les i0,i1,i2 .... par des variables ?

    merci

  2. #2
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Tu peut mettre tes TShape dans un tableau, ensuite il ne te suffira plus qu'a faire une boucle for sur ton tableau

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    mettre les tshapes dans un tableau ?
    Comment on fait ca ?
    Je suis désolé, je viens de commencer un stage sous c++ builder alors que je l'ai jamais utilisé et que j'ai fait que de la console à l'école

    merci

  4. #4
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Et bien je suppose que tu as un nombre fixe de TShape,
    tu peut donc faire un tableau de TSahpe * et mettre tes TShape dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TShape * tabShape[n];
    tabShape[0] = i0;
    tabShape[1] = i1;
    tabShape[2] = i2;
    ...
    tabShape[n-1] = in-1;
    ensuite pour les parcourir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0;i<n;i++){
      tabShape[i]->Brush->Color = clLime;
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Ok merci je vois.
    Et oui il y a un nombre fixe de Tshape, mais c'est de l'ordre de la cinquantaine.
    Donc je devrai faire 50 fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tabShape[0] = i0;
    tabShape[1] = i1;
    tabShape[2] = i2;
    ...
    Mais tans pis ça m'allège déjà bien le travail si après je bosse dans un tableau.
    J'aurais bien aimé qu'on puisse faire un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int j=0;j<n;j++)
    'i'+j->Brush->Color=clLime;
    Mais la je rêve peut être trop ^^

  6. #6
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui, ça ce n'est pas possible en c++, mais sinon tu peut tout gérer en dynamique plutôt que de reprendre des TShape déjà créé sur la form, au lieu de les rangé dans le tableau tu fait un new pour les créer au démarrage, le problème c'est que tu doit redéfinir dans le code leurs placement sur la form, avantage, tout est géré facilement par des boucle et il y as donc moins de code

  7. #7
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    hum ok
    Ca m'a l'air un peu trop compliqué pour moi.
    Je vais me tenir à la première solution.
    Merci

  8. #8
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Ce n'est pas extrêmement compliqué, juste un peut de c++ de base pour créer le Shape (new et delete) et après renseigner les propriétés utile au bon endroit tout comme pour la couleur dans mon premier exemple
    Mais je peut comprendre que tu ne veuille pas tout casser (ou une bonne partie) de ce que tu as fait.

  9. #9
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Ah, je vais essayer de regarder cette méthode alors.

    Je vais rien casser puisque cette partie je viens de la commencer et j'ai pas eu envie de coder les 50 sans savoir si il y avait pas une autre solution ^^

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Si on déclare en global :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TColor LedColors[2] = {clGreen, clLime};
    TShape *Leds[50];
    On doit pouvoir y arriver assez facilement en initialisant ce tableau Leds dans le constructeur de la form !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Leds[0] = Shape1; //Shape50
    Leds[1] = Shape2; //..
    Leds[2] = Shape3; //..
    Leds[3] = Shape4; //..
    Leds[4] = Shape5; //..
    Leds[5] = Shape6; //..
    Leds[6] = Shape7; //..
    ....
    Leds[49] = Shape50; //Shape1
    D'autant plus que ça va s'exécuter plus vite qu'avec une boucle...

    Ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int z = 0xAA; // z = rep_trame[0]
    for(int j = 0; j < 8; j++)
        {
        Leds[j]->Brush->Color = LedColors[(z & 1)];
        z = z / 2;
        }
    Tu auras donc accès à tes leds depuis le tableau !
    Et il n'y aura rien d'étrange à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Leds[8 + j]->Brush->Color = LedColors[(z & 1)];
    Sinon, dans l'optique du "i" + j il faut raisonner avec FindComponent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString N = "i" + IntToStr(j+1) // si on part de j=0
    TComponent *Led = FindComponent(N);
    ((TShape*)Led)->Brush->Color ...
    A plus !

  11. #11
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup!
    Je vais le coder comme ça.
    Ça sera bien plus propre que ce que j'avais commencé de faire

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

Discussions similaires

  1. Lire et modifier les propriétés des fichiers Office
    Par SilkyRoad dans le forum Contribuez
    Réponses: 4
    Dernier message: 18/09/2006, 22h25
  2. modifier les propriétés d'impression
    Par zidenne dans le forum Delphi
    Réponses: 1
    Dernier message: 12/06/2006, 18h23
  3. Réponses: 16
    Dernier message: 05/04/2006, 17h28
  4. Réponses: 3
    Dernier message: 11/01/2006, 12h01
  5. Modifier les propriétés d'un fichier
    Par manu1407 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/11/2005, 10h39

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