PDA

Ver la Versión Completa : Manejo de un Ttimer


miguel_fr
19-06-2004, 23:02:59
Buenas, soy yo nuevamente con una consulta simple pero que me esta matando.
tengo un Ttimer en mi form y no se bien como utilizarlo, yo necesito generar un contador que comienze en 0 y se vaya incrementando, el contador es de tiempo, o sea que tiene hora, minutos y segundos.
lo unico que logro hasta el momento es inicializar mi contador a cero

var
DateTime : TDateTime;
datetime:=0;{no importa si pongo 1000 siempre esta en cero}
edit.text:= timetostr(datetime);
{cuando yo quiero incrementar esto utilizo la funcion}
IncSecond(datetime,60);
{pero no me funciona}

el incremento lo debo hacer en el evento ontimer, si no me equivoco. me surge otra duda, si necesito mas de un contador de este tipo, voy a necesitar tantos Ttimer como contadores quiera incorporar?

hogol
20-06-2004, 00:33:59
Hola buenas

Yo lo haría del siguiente modo:

1) Define una variable global como tdatetime. Por ejemplo var hora_inicio : Tdatetime;

2) En el evento oncreate del formulario añades esto: hora_inicio := now;

3) Finalmente en el evento ontimer pon solo esta linea : edit1.text := timetostr(now-hora_inicio);

El problema de tu código es que defines la variable en el evento del timer, con lo cual el valor actual se pierde cada vez que sale del evento. Además, cada vez que se ejecuta el timer tu mismo pones el contador a cero, cuando solo deberias hacerlo una vez al comenzar el programa.
Finalmente, lo de sumar 'manualmente' el valor del contador tampoco es muy buena idea porque la precisión del timer no es muy buena y a la larga tu reloj terminaria adelantandose o atrasandose.

Saludos
Hogol

miguel_fr
20-06-2004, 01:29:04
muchas gracias por tu ayuda, ya me pongo a investigar esto y luego te aviso. no tenia idea de "now"
siguiendo en el tema, el timer como ve una resta de este tipo
datetime = 23:00
now = 01:00

tengo que realizar algun tratamiento en estos casos o delphi realiza la convercion adecuada para no tener problemas?

Lepe
21-06-2004, 20:25:26
El tipo de dato TDateTime es formato de fecha y hora, representado mediante un número real, donde la parte entera es el número de dias y la parte fraccionaria es la hora, minutos, segundos y milisegundos.

Por tanto puedes hacer perfectamente sumas y restas con otras fechas y mezclandolos con números, que siempre vas a tener una fecha válida.


hora_inicio := hora_inicio + 1 // sumamos 1 dia
hora_inicio := hora_inico + 1/24 // sumamos 1 hora a la fecha.


Mas natural sería usar las funciones que existen en delphi (al menos en la version 6) para incrementar parcialmente, pero bueno, es la idea lo que importa.

Por tanto, cuando sean las 23:00 y le sumas 2 horas, cambiará la hora y la fecha, dandote la 1 de la madrugada y modificando la fecha del datetime.

Si lo que necesitas es saber el tiempo que ha pasado entre 2 fechas, usa las funciones DaysBetween, HoursBetween etc... etc...

Saludos