var
MinutesLeft : integer;
procedure OnTimer();
begin
dec(MinutesLeft);
Label1.Text := IntToStr(MinutesLeft);
end;
Обратный отсчет
Подскажите пожалуйста как реализовать отсчет обратного времени по таймеру.Чтобы на форме label все время по таймеру менялся и показывал сколько еще времени осталось до конца
Код:
IL84,тот метод что ты предложил,не работает.
делаешь значит чё-то не так.... метод рабочий!!!
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
MinutesLeft := 2*60*60; // 2 часа
Timer1.Interval := 1000; // в каждую секунду
Timer1.Enabled := True; // запустить timer
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
hr, mn, sc: Integer;
begin
MinutesLeft := MinutesLeft - 1;
hr := MinutesLeft div 3600;
mn := (MinutesLeft - hr * 3600) div 60;
sc := MinutesLeft - hr * 3600 - mn * 60;
Label1.Caption := Format('%2.2d:%2.2d:%2.2d', [hr, mn, sc]);
if MinutesLeft <= 0 then
Timer1.Enabled := False;
end;
begin
MinutesLeft := 2*60*60; // 2 часа
Timer1.Interval := 1000; // в каждую секунду
Timer1.Enabled := True; // запустить timer
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
hr, mn, sc: Integer;
begin
MinutesLeft := MinutesLeft - 1;
hr := MinutesLeft div 3600;
mn := (MinutesLeft - hr * 3600) div 60;
sc := MinutesLeft - hr * 3600 - mn * 60;
Label1.Caption := Format('%2.2d:%2.2d:%2.2d', [hr, mn, sc]);
if MinutesLeft <= 0 then
Timer1.Enabled := False;
end;
но все равно отсчет не идет,прога выдает на лейбеле следующее "2552:52:23"
но все равно отсчет не идет,прога выдает на лейбеле следующее "2552:52:23"[/QUOTE]Следовательно MinutesLeft имеет исходное значение = 9190343 и исходнодное значение Timer1.Enabled = true. Тогда хотя бы в OnCreate событии формы нужно инициализировать MinutesLeft. Напр. MinutesLeft := 60;
Цитата:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:='Осталось: '+Format('%d : %2d',[Min div 60, Min mod 60 ]);// выводим сколько времени осталось
Dec(Min);
if Min < 0 then form1.Close;// если меньше 0, то закрываемся
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.enabled:=true; // включае таймер
i:=SpinEdit1.Value;// узнаём значение
Min:=i*60;// переводим значение в минуты
begin
Label1.Caption:='Осталось: '+Format('%d : %2d',[Min div 60, Min mod 60 ]);// выводим сколько времени осталось
Dec(Min);
if Min < 0 then form1.Close;// если меньше 0, то закрываемся
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.enabled:=true; // включае таймер
i:=SpinEdit1.Value;// узнаём значение
Min:=i*60;// переводим значение в минуты