DEUST AMRL Orsay février 2007 Delphi séance N° 3 Boucles Objectif : simuler le

DEUST AMRL Orsay février 2007 Delphi séance N° 3 Boucles Objectif : simuler le fonctionnement d'un compteur de magnétophone, magnétoscope ou lecteur de CD, avec quelques gadgets : accès rapide à une position, lecture d'une zone déterminée, répétition en boucle de cette lecture N'hésitez pas à tester la démo K7.EXE qui est sur F:\DEUST\DELPHI\DEMOS Légende de la copie d'écran : Le texte qui suit paraît long, mais c'est pour mieux vous guider dans vos premières boucles ! N'oubliez pas d'enregistrer vos sources (unité et projet) avant chaque exécution, d'autant plus que les boucles "tant que" et "répéter jusqu'à" peuvent tourner indéfiniment si elles sont mal écrites … 1. Découpage de la fenêtre On commence par dessiner 4 panels dans cet ordre en les calant dans un angle le long d'un bord de la fiche grâce à leur propriété Align : nom dessiné dans (composant parent) propriété Align panel0 Fiche alLeft panel1 panel0 alTop panel2 panel0 alClient panel3 Fiche alClient 1 / 2 début du nom composant ne NumEdit nl NumLabel bn Button pa Panel panel1 panel3 panel2 nlCompteur1 bnVers bnRetour1 bnFin1 neBut nlCent nlDix nlUn bnRetour2 bnFin2 neDebut neFin nlCompteur3 bnBoucle bnStop bnUneFois 2. Première forme de boucle a) Dessinez les composants du panneau panel1 situé en haut à gauche. b) Réagissez au clic sur le bouton bnFin1 : grâce à une boucle for, faire avancer une variable entière de 1 à 999 ; dans cette boucle : affichez dans nlCompteur1 la valeur de cette variable, placez également l'instruction Application.ProcessMessages sans laquelle on ne verrait pas avancer le compteur (neCompteur1) ; la valeur 999 serait seulement affichée à la fin de la boucle ! ProcessMessages donne à Windows la possibilité de traiter les messages, même à l'intérieur d'une boucle for while ou repeat (nlCompteur1.Value:= … est un message). c) Réagissez au clic sur le bouton bnRetour1 : grâce à une boucle for, faire "reculer" une variable entière de 999 à 0 ; dans cette boucle : affichez dans nlCompteur1 la valeur de cette variable, placez également l'instruction Application.ProcessMessages d) Réagissez au clic sur le bouton bnVers : grâce à une boucle tant que, faire "avancer" une variable entière depuis la valeur affichée dans le compteur jusqu'à la valeur qui sera entrée par l'utilisateur dans neBut ; dans cette boucle : affichez dans nlCompteur1 la valeur de cette variable, placez également l'instruction Application.ProcessMessages Si le compteur affiche déjà une valeur supérieure à ce qu'on veut atteindre, on ne bougera pas. 3. Deuxième forme de boucle a) Dessinez les composants du panneau panel2 situé en bas à gauche. b) Réagissez au clic sur le bouton bnFin2 : déclarez trois variables de type integer : un, dix et cent qui serviront de variable pour les 3 boucles ci-dessous, grâce à 3 boucles for placées dans le bon ordre, simuler un compteur à 3 chiffres (celui des unités, celui des dizaines et celui des centaines), dans la première instruction de chaque boucle, affichez dans le NumLabel correspondant la valeur de la variable gérée par la boucle ; par exemple, juste après l'instruction for qui contrôle la variable cent, affichez la valeur de cent dans nlCent.Value, placez à l'intérieur de la boucle la plus intérieure l'instruction Application.ProcessMessages c) Réagissez au clic sur le bouton bnRetour2 : faites comme pour la réaction au clic sur bnFin2, mais en redescendant de 999 à 0 Un "copier/coller" légèrement modifié doit convenir. 4. Troisième forme de boucle a) Dessinez les composants du panneau panel3 de droite. b) Réagissez au clic sur le bouton bnUneFois (on joue une fois le morceau qui va de neDebut.Value à neFin.Value) : une boucle pour convient pour faire avancer une variable entière du début à la fin du morceau, en affichant le contenu de cette variable dans nlCompteur3 (sans oublier Application.ProccessMessages). c) Réagissez au clic sur le bouton bnBoucle (on répète le morceau indéfiniment) : on met false dans une variable Stop de type boolean (qu'il faut déclarer juste après Form1), grâce à une boucle répéter jusqu'à (pour répéter le morceau) : faire appel à la procédure précédente : bnUneFoisClick(Sender) n'oubliez pas Application.ProcessMessages pour qu'un clic sur le bouton Stop soit efficace, jusqu'à ce que Stop soit égal à True d) Réagissez au clic sur bnStop : donnez à la variable Stop la valeur True. 2 / 2 uploads/s3/ exo-3.pdf

  • 37
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager