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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2005
    Messages : 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 493
    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 493
    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 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

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

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

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Membre éprouvé 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
    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 éprouvé
    Inscrit en
    Avril 2005
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 123
    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
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2005
    Messages : 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