Página 1 de 1

Teimpo decreciente

Publicado: Mar Oct 09, 2012 6:09 pm
por pablogustavof
Hola, necesito crear un reloj decreciente en minutos y segundos para controlar el tiempo restante para una mesa de pool. El operador asigna los minutos por ejemplo: 20, 30 o 60 minutos y de alli necesito un cronometro decreciente que me muestre cuanto minutos y segundos quedan de juego en la mesa asignada, desde ya gracias. Pablo de Salta

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 12:16 pm
por Mauricio
Hola, supongamos que tenés una ventana donde mostrás el reloj. Tiene un botón de Inicio, antes el operador asigna los minutos como vos decís.
La ventana tiene un timer, digamos cada 1 segundo (Timer = 100). Entonces, en cada evento timer, descontás 1 segundo a la hora seteada, cuando esta llega a 0 hacés sonar todas las alarmas. :)
Se entiende la idea?

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 12:42 pm
por pablogustavof
Puse el siguiente codigo en el timer, anda perfecto pero cuando llega a cero vuelve a empezar en negativo y no se como pararlo

case LOC:tp_as[1]
of 1 orof 20 orof 30 orof 60
LOC:ct_sg[1]=LOC:ct_sg[1]-1
If LOC:ct_sg[1]=-1
LOC:ct_mt[1]=LOC:ct_mt[1]-1
LOC:ct_sg[1]=59
.
LOC:tiemp=clip(LOC:ct_mt[1]-1) & ':' & clip(format(LOC:ct_sg[1],@n02))
?LOC:tiemp{PROP:FontColor}=COLOR:White
.

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 12:52 pm
por Mauricio
Ejecutá todo en el timer solo cuando el tiempo sea mayor a 0. En el preciso instante en que llega a 0 mostrás un mensaje y le das al usuario la opción de resetearlo.

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 1:30 pm
por pablogustavof
Gracias, ahora como saco la hora q tiene q finalizar ese turno de mesa, si tengo como datos la hora de inicio y la cantidad de minutos asignados?

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 1:53 pm
por Mauricio
Supongamos que empezó a las 16:00 horas y tenés 45 minutos asignados, con lo cual va a terminar a las 16:45.
El tiempo, en Clarion, empieza a medianoche (valor 1) hasta las 23:59:59.99 (valor 8.640.000). La función clock() te devuelve el tiempo transcurrido desde la medianoche.
En Clarion la conversión es la siguiente:
1 segundo ----------> 100
1 minuto ----------> 6000
1 hora ----------> 360000
Entonces, si tu turno termina a las 16:45, tenés que hacer 16 x 360000 + 45 x 6000 = 6030000
Nuevamente, en el evento timer, preguntás:

Código: Seleccionar todo

IF Clock() > 6030000
    Message('Turno terminado')
END !IF

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 2:19 pm
por pablogustavof
Lo entendi, pero lo que quiero es lo siguiente:

hora de ingreso: 11:12:23
tiempo asignado: 20 minutos
hora en q se debe parar: ???? tengo q mostrar la hora de salida


gracias y mis disculpas...

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 5:35 pm
por Mauricio
Tenés que convertir tu hora inicial a la forma de Clarion. Luego le sumás los minutos multiplicados x 6000 (que es la duración de 1 minuto en Clarion). Y así obtenés el resultado.
Más fácil aún, bajate un template gratuito llamado fsDates que tiene para sumar fechas y horas. :)

Re: Teimpo decreciente

Publicado: Mié Oct 10, 2012 6:12 pm
por pablogustavof
gracias