PDA

Ver la Versión Completa : De una captura de fecha, hacer que avance con TTimer


Cristhor1982
20-05-2013, 22:14:00
Amigos...les cuento, desde mi BD, obtengo el campo (Hora), lo dejo en un Label.Caption...Algo ASI

label2.Caption := timetostr(hora)

Ahora bien, quiero que el timer lo haga avanzar desde la hora capturada...se entiende?..Gracias

Saludos

:)

Los Hilos que encontré no me ayudaron mucho

:S

ecfisa
20-05-2013, 22:46:08
Ahora bien, quiero que el timer lo haga avanzar desde la hora capturada...se entiende?.

Hola.

Bueno, espero que si... :rolleyes: :)

Ejemplo:

implementation

uses DateUtils;

var
CampoHora : TTime;

procedure TForm1.FormCreate(Sender: TObject);
begin
CampoHora := Time;
// En tu caso sería: CampoHora := TuDataSet.FieldByName('FECHA').AsDateTime;
Label1.Caption := FormatDateTime('hh:mm:ss', CampoHora);
Timer1.Interval := 1000;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
CampoHora := IncSecond(CampoHora);
Label1.Caption := FormatDateTime('hh:mm:ss', CampoHora);
end;


Saludos. :)

Cristhor1982
20-05-2013, 22:55:00
Ecfisa

Muchas Gracias...!!!, me funciono excelente....Gracias...Ahm, se salta los segundos, pero ahi vere, lo que muestra es esto

16:31:00...16:31:02...16:31:03 y asi sucesivamente

Pero le echare un vistazo GRACIAS


Saludos

Cristhor1982
22-05-2013, 17:51:52
Hola, ECFISA

Te cuento que no logro dar con el porque de el adelanto de un segundo mas ...me podrías dar una idea porfa. Como avanzaba el doble lo unico que se me ocurrio para salir del paso es aumentar el interval a 2000 desde que captura, y no mostrar los segundos :S



Saludos

Hola.

Bueno, espero que si... :rolleyes: :)

Ejemplo:

implementation

uses DateUtils;

var
CampoHora : TTime;

procedure TForm1.FormCreate(Sender: TObject);
begin
CampoHora := Time;
// En tu caso sería: CampoHora := TuDataSet.FieldByName('FECHA').AsDateTime;
Label1.Caption := FormatDateTime('hh:mm:ss', CampoHora);
Timer1.Interval := 1000;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
CampoHora := IncSecond(CampoHora);
Label1.Caption := FormatDateTime('hh:mm:ss', CampoHora);
end;


Saludos. :)

nlsgarcia
22-05-2013, 19:25:48
Cristhor1982,


...se salta los segundos...no logro dar con el porque de el adelanto de un segundo mas...


Revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, DateUtils;

type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Tiempo : TTime;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Tiempo := Time;
ListBox1.Items.Add(FormatDateTime('hh:mm:ss', Tiempo));
Timer1.Interval := 500;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Tiempo := IncSecond(Tiempo);
ListBox1.Items.Add(FormatDateTime('hh:mm:ss', Tiempo));
end;

end.

El código anterior basado en el ejemplo del Msg #2 muestran los segundos de forma consecutiva en un control TListBox al disminuir el intervalo de tiempo en el control Timer de 1000 ms a 500 ms, en tu caso particular puedes ajustarlo según tus requerimientos.

Espero sea útil :)

Nelson.