Rechercher : dans
Par :

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

Dernière réponse le 5 jun 2009 à 09:36:31 diablo69, le 22 déc 2006 à 08:50:45 
 Signaler ce message aux modérateurs

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 !

Configuration: Windows XP
Firefox 2.0.0.1

1

diablo69, le 22 déc 2006 à 14:54:35

Up c'est vraiment urgent !!

Répondre à diablo69

2

le mage guerrier lvl 88, le 8 jan 2009 à 10:54:08

Formate :-D

Répondre à le mage guerrier lvl 88

3

AYOUBBETA, le 7 mai 2009 à 00:09:59

<nom_de-Ttimer> ->Enabled=false;
exemple:
mytime->Enabled=false ;

Répondre à AYOUBBETA

4

inizi, le 3 jun 2009 à 12:08:22

Bonjours,

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

Répondre à inizi

5

tony, le 5 jun 2009 à 09:34:41

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 ;
}
}

Répondre à tony

6

 tony, le 5 jun 2009 à 09:36:31

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++ ;
}
}

Répondre à tony