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

Langage Delphi Discussion :

Comment créer une boucle ?


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut Comment créer une boucle ?
    Explication: J'ai 10 petits "shape1" de couleur verte sur une form1, et qui sont bien alignés.
    Je veux créer une petite boucle par laquelle chaque "shape" va changer sa couleur en bleu, mais un à la fois et à chaque fois qu'un shape deviens bleu, tous les autres redeviens verts.
    Je suppose qu'il faut bien utiliser un timer, mais comment faire la boucle??

    Merci d'avance pour toute bonne idée...

  2. #2
    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
    Salut,
    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    var i : integer;
    begin
      cpt := ((cpt) mod 10) + 1;
      for i := 1 to 10 do
      begin
        if i = cpt then
          TShape(FindComponent('Shape' + IntToStr(i))).Brush.Color := clBlue
        else
          TShape(FindComponent('Shape' + IntToStr(i))).Brush.Color := clGreen;
      end;
    end;
    cpt étant un integer déclaré en private

    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    Excellent!! Ca marche!
    Je voudrais comprendre ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cpt := ((cpt) mod 10) + 1;
    ceci je ne comprends pas. Que veut dire ça?
    Et pourquoi déclarer "cpt" en privé global?
    Merci.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cpt := ((cpt) mod 10) + 1;
    alors ceci est juste une petite formule pour créer un compteur qui va de 1 à 10 et qui revient à 1 ensuite et ainsi de suite.

    a mod b renvoie le reste de la division de a par b donc
    quand cpt = 1 :

    cpt := (1 mod 10) + 1 = 1 + 1 = 2

    pour cpt = 2 :

    cpt := (2 mod 10) + 1 = 2 + 1 = 3

    ...

    et pour cpt = 10 :

    cpt := (10 mod 10) + 1 = 0 + 1 = 1

    voilà quant à la déclaration de cpt, tu la mets où tu veux mais en tout cas pas dans le OnTimer car la valeur de cpt doit etre conservé après chaque événement OnTimer. C'est la variable qui sauvegarde le numéro de ton shape bleu j'espère que c'est clair
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    cpt est un INTEGER ( ou assimilé )
    CPT = (CPT mod 10 ) +1 => cpt = reste de la division de cpt par 10 ( donc 0 à 9) auquel on ajoute 1 ( donc le résultat final dans CPT sera un entier entre 1 et 10 )

    exemple
    cpt=33
    -> (cpt mod 10) + 1 = 3 + 1 = 4

    dans ce petit code on auurait pu ajouter
    var cpt : innteger; et initialiser cpt = random (1000);

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    OUUUF!! Merci, maintenant il me faut du calme pour bien digérér tout ça...
    MERCIIIII.....

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/05/2012, 15h03
  2. 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, 18h14
  3. [XSLT] Comment créer une boucle
    Par Kefass dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 28/02/2007, 22h57
  4. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 16h48

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