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 :

M�me code pour plusieurs shapes


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    163
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 163
    Par d�faut M�me code pour plusieurs shapes
    Bonjour,

    Je dois mettre plusieurs fois le meme code dans un timer pour plusieurs shapes, au fait, je veux faire disparaitre mes shapes (Shape1->Visible = false) quand l'utilisateur fait quelque chose, �a j'arrive a faire, par contre j'ai 10 shapes et je veux pas a chaque fois marquer mon test juste en changeant le nom du shape (Shape1, Shape2, Shape3, etc..).. Y-a-t-il une solution ?

    Merci

  2. #2
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Chaque Shape est une s�rie dans ton Graph.

    Tu as la possibilit� d'acc�der � une s�rie par son indice dans la liste des S�ries de ton Chart.

    Exemple acc�s au shape � l'indice 1
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
       TChartShape *Shape = (TChartShape *)(Chart->Series[1]);
    tu pourrais d�termin� l'indice du shape � effac� et y acc�der. Ainsi tu ne r�p�te pas ton code plusieurs fois.

  3. #3
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Salut,
    Il existe une m�thode pour parcourir tous les composants, par exemple ici:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    for ( int x=0 ; x<Form1->ControlCount ; x++)
            {
                if(Form1->Controls[x]->Name == "Edit"+IntToStr(PID))
                    ((TEdit*)Form1->Controls[x])->Text = "Execution thread "+IntToStr(PID)+" ID = "+ IntToStr(_threadid) +" , heure = "+ IntToStr(t.ti_hour)+":"+ IntToStr(t.ti_min)+":"+ IntToStr(t.ti_sec)+":"+IntToStr(t.ti_hund/10);
            }
    le code o� j'avais lancer 10 Thread avec le m�me code mais un num�ro d'ID propre et je voulais que chaque Thread �crit dans le Edit qui lui est associ�.
    Tread ID PID, associ� � Edit PID.

    Tu peux faire de m�me et Tester le type de composant, son nom ou toutes les autres propri�t�s communes.
    Attention, plus tu auras de composant, plus ta boucle de recherche sera longue.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    163
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 163
    Par d�faut
    Merci de vos r�ponses, pour bandit boy je vois pas du tout comment je pourrais faire ca.. Sachant que j'ai 10 Shapes..

  5. #5
    Membre �prouv�
    Inscrit en
    Mars 2002
    Messages
    105
    D�tails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Par d�faut
    Bonjour,

    on peut utiliser la m�thode "FindComponent".

    Cf http://www.developpez.net/forums/sho...=findcomponent

    Nicolas

  6. #6
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Peux tu en donner un peu plus?

    Etats des Shapes avant et apr�s tes test ainsi que les conditions de tests.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    163
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 163
    Par d�faut
    Voici mon code au ca oui qui fonctionne mais que pour le Shape7 et moi je voudrais l faire por tout les shapes au faite..
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
           if(BoulePosY <= (Shape7->Top + 35)) {
             Shape7->Visible = false ;
             BouleIncrY = BouleIncrY * -1 ;
             }

  8. #8
    Membre �prouv�
    Inscrit en
    Mars 2002
    Messages
    105
    D�tails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Par d�faut
    Bonjour,

    dans ce cas l�, il est peut �tre plus judicieux de stocker les TShapes dans un tableau (� l'initialisation) pour ensuite y acc�der plus rapidement et facilement (via leur indice).

    Nicolas

  9. #9
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Alors tu peux faire comme ca:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        for ( int x=0 ; x<Form1->ControlCount ; x++)
        {
            if(Form1->Controls[x]->Name.Pos("Shape") != 0)
            {
                 if(BoulePosY <= (((TShape*)Form1->Controls[x])->Top + 35))
                 {
                       ((TShape*)Form1->Controls[x])->Visible = false ;
                       BouleIncrY = BouleIncrY * -1 ;
                 }
            }
        }
    Et tu ex�cute ce code pour un �vennement d'UN Shape. Ensuite dans l'inspecteur d'�vennement (tu fais F11, et tu vas dans l'onglet Evennement) tu choisis cet �vennement dans tous les autres Shape.

    Par exemple tu peux choisir d'ex�cuter l'�vennement OnClick du bouton1, lors d'un click sur le bouton 2, en choisissant "Button1Click" dans l'�vennement Onclick du bouton 2.

  10. #10
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Peut-�tre en mettant un peu plus de r�flexion dans ce d�veloppement.

    Ton probl�me est d'avoir sans arr�t � traiter des objets qui entrent en lice alors qu'il ne devraient plus �tre pris en compte � un moment de l'histoire.
    Pourquoi ne pas superviser tes collisions (s'il s'agit de collisions) avec deux listes s'il s'agit de travailler sans cesse avec les m�mes 10 shapes :
    - une liste pour les objets visibles
    - une liste pour les objets invisibles

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    TList *Enjeu;
    TList *Horsjeu;
    Pour faire dispara�tre un shape, l'astuce est la suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Shape->Visible = false;
    Enjeu->Delete(Enjeu->IndexOf(Shape)); //ne sera plus pris en compte dans le traitement
    Horsjeu->Add(Shape); // en attendant de réintégrer le jeu
    Pour l'analyse des objets toujours en lice, il ne restera donc plus qu'� analyser les shapes maintenus dans la liste :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    for(int j = 0; j < Enjeu->Count; j++)
    {
    TShape *Shape = (TShape*)Enjeu->Items[j];
    //... la suite
    }
    C'est juste une id�e !

    A plus !

Discussions similaires

  1. Changement de codes pour plusieurs pages en m�me temps
    Par d-85a dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 2
    Dernier message: 01/05/2013, 23h38
  2. [XL-2003] Avoir le m�me code pour plusieurs feuilles
    Par NEC14 dans le forum Macros et VBA Excel
    R�ponses: 7
    Dernier message: 07/01/2010, 13h29
  3. [VBA Excel] Une m�me macro pour plusieurs CheckBox
    Par Choupett' dans le forum Macros et VBA Excel
    R�ponses: 11
    Dernier message: 16/06/2006, 13h54
  4. [excel] m�me code sur plusieurs feuilles
    Par sabotage dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 16/11/2005, 12h23
  5. R�ponses: 4
    Dernier message: 06/11/2003, 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