Ver Mensaje Individual
  #6  
Antiguo 24-02-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Cita:
Empezado por wolfran_hack Ver Mensaje
..., 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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita