 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Mar 23 Sep, 2008 6:53 pm Asunto: Mostrar la cuenta atrás de un Timer |
|
|
Buenas tardes.
Quiero que cuando una función determinada finalice, cada x minutos se refresque y vuelva a empezar, para ello uso el componente TTimer.
Ahora me viene la duda, si quiero que, en un TLabel por ejemplo, me muestre la cuenta atrás de lo que queda para el "autorefresco" cómo lo podría hacer?
Es decir que me muestre en algún lugar del Form algo como:
Autorefresco en: 10:00
que pase a ser:
Autorefresco en: 09:59
que pase a ser:
Autorefresco en: 09:58
...
y así sucesivamente hasta el 00:00.
Gracias. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 24 Sep, 2008 8:01 am Asunto: |
|
|
Se me ocurre algo así. Tomo, como dices, 10 minutos.
| Código: | TDateTime tHora = EncodeTime(0, 10, 0, 0);
TDateTime tMenos = EncodeTime(0, 0, 1, 0);
Timer1->Interval = 1000; // Cada segundo |
y en el evento OnTimer:
| Código: | void __fastcall TfLanzador::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
tHora -= tMenos;
Label1->Caption = "Quedan " + tHora.FormatString("mm:ss");
if (tHora > 0)
{
Timer1->Enabled = true;
return;
}
[Lo que haya que hacer cuando acabe el tiempo]
}
//--------------------------------------------------------------------------- |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Mie 05 Nov, 2008 12:31 pm Asunto: |
|
|
Hola.
He probado el código y resulta que tal cual está empieza a contar desde 12:59 (13:00) y decrementando cada vez que pasa por el Timer.
He estado viendo qué estaba ocurriendo pero no veo donde falla. Aunque modifique las variables de entrada:
TDateTime tHora = EncodeTime(0, 10, 0, 0);
a por ejemplo
TDateTime tHora = EncodeTime(0, 5, 0, 0);
sigue empezándo a ejecutarse desde 12:59, 12:58 ...
Lo tengo así en el código:
| Código: | TDateTime tHora = EncodeTime(0, 10, 0, 0);
TDateTime tMenos = EncodeTime(0, 0, 1, 0);
Timer1->Interval = 1000; // Cada segundo |
En el evento OnTimer:
| Código: | void __fastcall TMainForm::TimerFinCapTimer(TObject *Sender)
{
this->TimerFinCap->Enabled = false;
tHora = tHora - tMenos;
this->Label2->Caption = "Quedan " + tHora.FormatString("mm:ss");
//[Lo que haya que hacer cuando acabe el tiempo]
} |
y un botón:
| Código: | void __fastcall TMainForm::Button1Click(TObject *Sender)
{
this->TimerFinCap->Enabled = true;
} |
para hacer las pruebas.
Gracias y saludos. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 05 Nov, 2008 5:20 pm Asunto: |
|
|
| zankiu escribió: | Hola.
He probado el código y resulta que tal cual está empieza a contar desde 12:59 (13:00) y decrementando cada vez que pasa por el Timer.
He estado viendo qué estaba ocurriendo pero no veo donde falla. Aunque modifique las variables de entrada:
TDateTime tHora = EncodeTime(0, 10, 0, 0); |
A ver. Según la ayuda de EncodeTime la estructura es:
| Código: | EncodeTime(Word Hour, Word Min, Word Sec, Word MSec) |
Como una imagen vale más que 1000 palabras...

Exactamente con el código adjunto. Lo único erróneo que he visto en el código es el formateo de la hora, que debía ser nn:ss en vez de mm:ss _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Jue 06 Nov, 2008 12:40 pm Asunto: |
|
|
Hola de nuevo.
Si, es nn:ss en vez de mm:ss.
Gracias, ahora si que cuenta bien! |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|