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 :

Comment faire pour avoir une boucle r[i].Visible à la place de r1.visible, r2.visible


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Enseignant
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Comment faire pour avoir une boucle r[i].Visible à la place de r1.visible, r2.visible
    Bonjour,
    Je fais un petit jeu et j'ai besoin de votre aide pour rassembler des dizaines de lignes de code en une seule.
    Pour l'instant j'ai ce groupe plus de 20 fois (autant que de TShape)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Begin
          r4.Visible := false;
          updatevar('+');
    end;
    Et j'aimerais que ça se transforme en :
    updatevar('+',4)

    Ma fonction updatevar plus haut dans mon code ressemble à ça.

    Comment puis-je utiliser le 2nd paramètre (chiffre qui dit quel TShape rendre visible) :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function updatevar(c:char,i:integer);
    Begin
      If c = '+' Then
        Begin
          r[i].Visible := true;
                    //OU
          r+'i'.Visible := true;
                    //OU autre solution ??
          horiz := 1;
          vert  := random(2);
          addpoint('p2')
        end
    end;
    [edit Malatar]Merci de et d'éviter le multipost [/edit]

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    premier conseil met ton code entre balise code

    sinon pour ce que tu cherche regarde du cote de findcompoment

    @+ Phil

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    Déclare un tableau où tu places les composants que tu souhaites indexer.

    cdlt

    e-ric

  4. #4
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    si j'ai bien compris tes composant r(nb) sont des TShape ?

    si c'est ça tu dois pouvoir t'en sortir en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function updatevar(c:char,i:integer);
    Begin
      If c = '+' Then
        Begin
          TShape(Self.findComponent('r' + IntToStr(i))).Visible := true;
          horiz := 1;
          vert  := random(2);
          addpoint('p2')
        end
    end;


  5. #5
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 123
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par Guile
    si j'ai bien compris tes composant r(nb) sont des TShape ?

    si c'est ça tu dois pouvoir t'en sortir en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function updatevar(c:char,i:integer);
    Begin
      If c = '+' Then
        Begin
          TShape(Self.findComponent('r' + IntToStr(i))).Visible := true;
          horiz := 1;
          vert  := random(2);
          addpoint('p2')
        end
    end;
    De toute façon quel que soit le type (vu qu'il y a polymorphisme et chargement dynamique), tu peux carrement remplacer TShape par TCOntrol, comme ça quel que soit la classe, la propriete visible montre deja qu'il s'agit d'un TControl...

    Bon, c'est pas tres important, mais...

  6. #6
    Futur Membre du Club
    Profil pro
    Enseignant
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Merci de votre réponse c'est exactement ce que je voulais
    findcomponent est vraiment pratique . Merci à tous pour cette suggestion. (Je dois bien dire qu'en programmation je débute donc votre aide m'a été précieuse).

Discussions similaires

  1. Comment faire pour avoir une seule requête ?
    Par abdo1966 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/04/2013, 11h53
  2. Réponses: 3
    Dernier message: 11/06/2012, 17h47
  3. Comment faire pour avoir une barre de chargement pour un SWF externe?
    Par rigolman dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 10/04/2009, 10h49
  4. [gedit] Comment faire pour avoir une instance de gedit par onglet ?
    Par Davidbrcz dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/06/2007, 11h58
  5. Comment faire pour créer une boucle ?
    Par Arko76 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 02/04/2007, 17h14

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