Ver la Versión Completa : Contar Tiempo atrás
wolfran_hack
24-02-2016, 20:32:07
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.php?p=331782&postcount=2 este en particular, me sirvió para uno solo, no para todos los botones.
ecfisa
24-02-2016, 22:43:21
Hola.
..., 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:
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:
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 :)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.