Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Contar Tiempo atrás (https://www.clubdelphi.com/foros/showthread.php?t=89890)

wolfran_hack 24-02-2016 20:32:07

Contar Tiempo atrás
 
Tengo varios button que cada uno debe respetar un tiempo, por lo cual tengo algunos de 5 min a 60 min, la cuestión es como hago para contar el tiempo atrás, que arranque de 5 a 0.. y de 60 a 0 y luego haga una acción como activar el botón..

Alguna idea?

ecfisa 24-02-2016 20:53:58

Hola.

Revisa los enlaces al pié de esta página.

Saludos :)

Casimiro Notevi 24-02-2016 20:55:29

Mira los enlaces del final de página, abajo del todo.

Osorio 24-02-2016 21:02:57

Un TTimer tal vez?

y cuando llega a cero se ejecuta el eveto ontimer para que haga "algo".

wolfran_hack 24-02-2016 21:33:58

Probe con esos, http://clubdelphi.com/foros/showpost...82&postcount=2 este en particular, me sirvió para uno solo, no para todos los botones.

ecfisa 24-02-2016 22:43:21

Hola.

Cita:

Empezado por wolfran_hack (Mensaje 502589)
..., la cuestión es como hago para contar el tiempo atrás, que arranque de 5 a 0.. y de 60 a 0 y luego haga una acción como activar el botón.

Este ejemplo hace lo que solicitas, fijate si te sirve de guía:
Código Delphi [-]
unit uButtonTimer;

interface

uses Classes, StdCtrls, ExtCtrls;

type
  TButton = class(StdCtrls.TButton)
  private
    FLapso : Integer;
    FTimer : TTimer;
    procedure FTimerTimer(Sender: TObject);
    function GetLapso: Integer;
    procedure SetLapso(const Value: Integer);
  public
    constructor Create(AOwner: TComponent); override;
    property Timer: TTimer read FTimer write FTimer;
    property Lapso: Integer read GetLapso write SetLapso;
    destructor Destroy; override;
  end;

implementation

{ TButton }
constructor TButton.Create(AOwner: TComponent);
begin
  inherited;
  FLapso := 0;
  FTimer := TTimer.Create(Self);
  FTimer.Interval := 1000;
  FTimer.Enabled  := False;
  FTimer.OnTimer  := FTimerTimer;
end;

procedure TButton.FTimerTimer(Sender: TObject);
begin
  Dec(FLapso, Timer.Interval);
  Enabled := FLapso = 0;
  Timer.Enabled := FLapso <> 0;
end;

function TButton.GetLapso: Integer;
begin
  Result := FLapso;
end;

procedure TButton.SetLapso(const Value: Integer);
begin
  if Value <> FLapso then
    if Value > 0 then
      FLapso := Value;
end;

destructor TButton.Destroy;
begin
  FTimer.OnTimer := nil;
  FTimer.Free;
  inherited;
end;

end.

Ejemplo del uso:
Código Delphi [-]
unit Unit1;

interface

uses ...,
     uButtonTimer; // última posición en el uses

type
  TForm1 = class(TForm)
    btnCinco: TButton;
    procedure btnCincoClick(Sender: TObject);
  ...
  end;
...

implementation

const
  MINUTO = 1000 * 60;

procedure TForm1.btnCincoClick(Sender: TObject);
begin
  btnCinco.Enabled := False;
  btnCinco.Lapso   := 5 * MINUTO;
  btnCinco.Timer.Enabled := True;
end;
...

Saludos :)


La franja horaria es GMT +2. Ahora son las 06:26: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