[C++ Builder] Comment arrêter un Timer

Fermé
diablo69 Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 25 juin 2007 - 22 déc. 2006 à 08:50
 tony - 5 juin 2009 à 09:36
Bonjour les amis !
J'ai une question avec C++ Builder...

C'est a dire que j'ai crée un Timer dans mon projet pour une animation et je voulais qu'il s'arrête après 15 secondes... Genre quand je le declenche je veux qu'après 15 secondes il s'arrête !

Coment faire ca ?

Bonne journée !
A voir également:

5 réponses

Correctif de ma part j'ai oublié l'incrémentation compteur .

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
const int N = 15000 / Timer1->Interval ; /* 15 secondes*/

/* En static la valeur de cpt est gardée à chaque passage */
static int cpt = 0 ;

/* Test pour réaliser l'arret du timer. */
if (cpt == N) {
Timer1->Enabled = false ;
} else {
/* Incrémentation compteur si on est pas arrivé au 15 secondes*/
cpt++ ;
}
}
1
diablo69 Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 25 juin 2007
22 déc. 2006 à 14:54
Up c'est vraiment urgent !!
0
le mage guerrier lvl 88
8 janv. 2009 à 10:54
Formate :-D
0
<nom_de-Ttimer> ->Enabled=false;
exemple:
mytime->Enabled=false ;
0
bonjours,

en effet cela stoppe le timers mais comme savoir depuis combien de temps il tourne?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Une solution est de créer une variable static à l'intérieur du compteur, de l'initialiser avec 0 et de l'incrémenter a chaque passage dans la méthode OnTimer.

Comme tu connais grace à la propriété Interval l'écart entre deux "top" du timer, il est facile de faire une condition pour l'arret du timer.

Exemple avec Interval = 100ms
Pour arréter le compteur au bout de 15 secondes ( 15000 ms)

il faut donc : N = 1500 / 100 = 150 top timer.


La fonction onTimer ressemblera à ceci :


void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
const int N = 15000 / Timer1->Interval ; /* 15 secondes*/

/* En static la valeur de cpt est gardée à chaque passage */
static int cpt = 0 ;

/* Test pour réaliser l'arret du timer. */
if (cpt == N) {
Timer1->Enabled = false ;
}
}
0