unit timer;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Buttons, StdCtrls;
type
T_timer = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
Timer1: TTimer;
procedure Inicia(te : longint; s : string);
procedure Finaliza;
procedure Siguiente;
procedure Timer1Timer(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject); procedure FormActivate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
sec : longint;
total_elem : longint;
curr_elem : longint;
public
abortado : boolean;
end;
var
_timer: T_timer;
implementation
{$R *.DFM}
procedure T_timer.Siguiente;
begin
inc(curr_elem);
end;
procedure T_timer.Inicia(te : longint;s : string);
begin
sec := 0;
curr_elem := 1;
total_elem := te;
abortado := false;
caption := s;
Timer1.Enabled := true;
Show;
end;
procedure T_timer.Finaliza;
begin
Timer1.Enabled := false;
MessageDLG(Caption + ' finalizado.',mtInformation,[mbOk],0);
visible := false;
close;
end;
procedure T_timer.Timer1Timer(Sender: TObject);
var
hr,mn,sc : integer;
he,me,se : integer;
el : longint;
et : longint;
begin
Application.ProcessMessages;
inc(sec);
sc := sec mod 60;
mn := (sec div 60) mod 60;
hr := sec div 3600;
Label3.Caption := FormatFloat('0',hr) + ':' + FormatFloat('00',mn) + ':' + FormatFloat('00',sc);
el := curr_elem;
et := sec*total_elem div el;
se := et mod 60;
me := (et div 60) mod 60;
he := et div 3600;
Label4.Caption := inttostr(he) + ':'+formatfloat('00',me) + ':' + formatfloat('00',se);
end;
procedure T_timer.SpeedButton1Click(Sender: TObject);
begin
abortado := True;
end;
procedure T_timer.FormActivate(Sender: TObject);
begin
Label3.Caption := '---';
Label4.Caption := '---';
end;
procedure T_timer.FormShow(Sender: TObject);
begin
if timer1.enabled = false then close;
end;
procedure T_timer.FormCreate(Sender: TObject);
begin
Timer1.Enabled := false;
end;
end.