Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cuenta regresiva en pantalla (https://www.clubdelphi.com/foros/showthread.php?t=77134)

pape19 26-12-2011 14:47:26

Cuenta regresiva en pantalla
 
Buenas...tengo una aplicación que utilizan los empleados de mi empresa a la cual quiero agregarle un botón de descanso, que al presionarlo, en el centro de la pantalla solo figure un reloj(cronómetro) que valla mostrando una cuenta regresiva, partiendo de los cinco minutos.

Cuando este reloj llegue a 00:00:00, esta ventana se cerrará y la pc del usuario volverá a su estado anterior.

Como puedo realizar esto?

Muchas gracias!

ecfisa 26-12-2011 15:57:44

Hola pape19.

Si no te entendí mal, podrías hacer algo como esto:

Ventana con cuenta regresiva:
Código Delphi [-]
...
type
  TForm2 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FCountDown: TTime;
  public
    property CountDown: TTime read FCountDown write FCountDown;
  end;

var
  Form2: TForm2;

implementation {$R *.dfm}

uses DateUtils;

procedure TForm2.FormCreate(Sender: TObject);
begin
  BorderStyle:= bsNone;
  WindowState:= wsMaximized;
  Color:= clBlack;
  Timer1.Enabled:= True;
  with Label1 do
  begin
    Color:= clBlack;
    Font.Name:= 'Verdana';
    Font.Size:= 72;
    Font.Color:= clLime;
    Left:= (Screen.Width - Width) div 2;
    Top:= (Screen.Height - Height) div 2;
  end;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  FCountDown:= IncSecond(FCountDown, -1);
  if FCountDown > 0 then
    Label1.Caption:= FormatDateTime('hh:mm:ss', FCountDown)
  else
  begin
    MessageBeep(MB_ICONEXCLAMATION);
    Close;
  end;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  Timer1.Enabled:= False;
end;

end.

Llamada:
Código Delphi [-]
...
implementation

uses Unit2;

procedure TForm1.btnDescansarClick(Sender: TObject);
begin
  with TForm2.Create(nil) do
  try
    CountDown:= StrToTime('00:01:00'); // 1 minuto de descanso como ejemplo
    ShowModal;
  finally
    Free;
  end;
end;

Saludos.

pape19 26-12-2011 16:20:02

Muchisimas gracias por tu respuesta. Aunque luego de abrir el hilo, seguí probando una solución. Y lo hice con esto.

Código Delphi [-]
procedure TForm2.FormShow(Sender: TObject);
begin
  segundos:=0;
  minutos:=5;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
    If segundos = 0 then
      begin
        If minutos = 0 then
          showmessage('Tiempo Terminado')
        else
          segundos:= 59;
          minutos:= minutos - 1;
      End
    else
      segundos := segundos - 1;
    FloatEdit2.text:=IntToStr(Segundos);
    FloatEdit1.text:=IntToStr(Minutos);
end;

StartKill 05-06-2012 02:43:50

Codigos precisos..

Cuenta regresiva....
Acabo de implementarlo, me ahorraron trabajo...:)

Your friend
Startkill
Lima-Perú


La franja horaria es GMT +2. Ahora son las 05:16:53.

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