Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Contador de tiempo de una aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=80325)

rufo 18-09-2012 22:01:43

Contador de tiempo de una aplicacion
 
Buenas tardes amigos, tengo un problemilla y ya revise el foro pero nada, resulta que estoy haciendo un programa en el cual tengo timer pero quiero hacer que cuando se ejecute mi aplicacion empieze un conteo de cuanto tiempo llevar ejecutandose mi programa, pero nose como hacerlo ya que no quiero usar botones si no que se active al iniciar la aplicacion, entonces nose como empezar, espero me ayuden y gracias de antemano.

roman 18-09-2012 22:11:07

Podrías activar el timer en el evento OnShow del formulario principal.

// Saludos

rufo 18-09-2012 22:25:33

Ok, gracias amigo Roman, ahora te muestro codigo que tengo en el cual no encuentro como hacer para que empieze el conteo desde 00:00:00
ya que el codigo que tengo empieza pero con un conteo en retroceso.


CODIGO

Código Delphi [-]
procedure TCONTROLPHONE.Timer1Timer(Sender: TObject);
 begin
  Label3.Caption:= FormatdateTime('hh:mm:ss',StrToDateTime(Label3.Caption) -0.00001);

end;

Jal9000 18-09-2012 22:34:08

Respuesta a contador de tiempo
 
Buenas.

Hay varias maneras.

Para empezar, ya que parece que te gusta el timer, puedes ponerlo con Timer1.Interval:= 1000 (ms.) e ir contando las veces que se activa a base de incrementar una variable global dentro del evento OnTimer del Timer. Lo activas en el evento FormShow de la Form principal de tu programa haciendo Timer1.Enabled:= True o bien ya directamente en el propio inspector de objetos. Cuando te interese saber cuanto tiempo ha pasado echas cuentas del tiempo con la variable y ya está.

De todas maneras yo no me liaría tanto. Existe funciones y variables especiales para tiempo:

Puedes declarar una variable, llamémosla tiempo del tipo TDateTime. Al empezar el programa, por ejempo en el evento FormShow de la Form principal de tu programa,
haz tiempo:= Now;

Now es una funcion que te devuelve el instante actual (no voy a entrar ahora en qué formato) y luego, cuando te interese saber cuanto tiempo ha pasado haz
tiempo:= Now - tiempo; esto te dejará la variable tiempo cargada con el tiempo que ha pasado desde el principio.
A continuación añade DateUtils a tu lista de uses y usa el procedimiento
DecodeDateTime(const AValue: TDateTime;
out
AYear : Word;
out
AMonth : Word;
out
ADay : Word;
out
AHour : Word;
out
AMinute : Word;
out
ASecond : Word;
out
AMilliSecond : Word);poniendo la variable tiempo como valor para AValue. Obtendrás en las variables de salida el incremento de tiempo descompuesto en años, meses... hasta milisegundos. En realidad cuesta más de explicar que de hacer, pero creo que ya lo habrás pillado. Ten en cuenta que si tienes que mirar el incremento de tiempo varias veces, habrás de guardar la primera lectura de Now en una variable aparte, para que no se pierda.

He leido por algún sitio que hay una variable del estilo de tick que se inicia al arrancar Windows (o quizá la sesión, ahora no sé). Podrías leerla dos veces al estilo de la segunda solución, pero la verdad, no me acaba de gustar.

Saludos y que no decaiga (el ánimo...)

Casimiro Notevi 18-09-2012 22:45:48

Jal9000, bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Cuando necesites poner código, recuerda poner los tags al mismo, ejemplo:



Gracias :)

Por cierto, has hecho una buena explicación sobre el tema.

Jal9000 19-09-2012 01:09:24

Tomo nota de las buenas costumbres
 
Hola, Casimiro:

Tomo nota de las buenas costumbres. De hecho ahora buscaba un "Envolver para regalo" pero no existe...

Saludos

Casimiro Notevi 19-09-2012 01:16:21

Cita:

Empezado por Jal9000 (Mensaje 443529)
De hecho ahora buscaba un "Envolver para regalo" pero no existe...

No te preocupes, eliges color y te lo ponemos para ti ;)

rufo 19-09-2012 22:02:09

Listo amigos ya me quedo resuelto el problemilla que tenia, les pongo el codigo para futuras consultas


Código Delphi [-]
procedure TCONTROLPHONE.Timer1Timer(Sender: TObject);
 begin
 segundos := segundos + 1;
 Label3.caption := TimeToStr(segundos / (24*60*60));
end;

Y en el evento Onshow le puse este codigo

Código Delphi [-]
procedure TCONTROLPHONE.FormShow(Sender: TObject);
begin
 LongTimeFormat := 'hh:mm:ss';
 Label3.caption := TimeToStr(0);
 Timer1.enabled := true;
 segundos := 0;
end;

Y en la parte de private

Código Delphi [-]
private
    { Private declarations }
  segundos : longint;

y con eso me funciono lo que esta buscando, espero que les ayude a futuras consultas y gracias a todos.


La franja horaria es GMT +2. Ahora son las 00:31:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi