Hola.
Cita:
Empezado por wolfran_hack
..., 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
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;
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