Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обратный отсчет

330
28 октября 2006 года
kastron
215 / / 17.09.2006
Подскажите пожалуйста как реализовать отсчет обратного времени по таймеру.Чтобы на форме label все время по таймеру менялся и показывал сколько еще времени осталось до конца
497
28 октября 2006 года
IL84
267 / / 24.04.2003
 
Код:
var
  MinutesLeft : integer;

procedure OnTimer();
begin
 dec(MinutesLeft);
 Label1.Text := IntToStr(MinutesLeft);
end;
330
28 октября 2006 года
kastron
215 / / 17.09.2006
IL84,тот метод что ты предложил,не работает.
339
28 октября 2006 года
verybadbug
619 / / 12.09.2005
делаешь значит чё-то не так.... метод рабочий!!!
3.0K
28 октября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=kastron]IL84,тот метод что ты предложил,не работает.[/QUOTE]Не работает скорей всего потому, что или timer не запущен или MinutesLeft не инициализирован.
Код:
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;
330
28 октября 2006 года
kastron
215 / / 17.09.2006
Я дописал в var Minutesleft: integer;
но все равно отсчет не идет,прога выдает на лейбеле следующее "2552:52:23"
3.0K
28 октября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=kastron]Я дописал в var Minutesleft: integer;
но все равно отсчет не идет,прога выдает на лейбеле следующее "2552:52:23"[/QUOTE]Следовательно MinutesLeft имеет исходное значение = 9190343 и исходнодное значение Timer1.Enabled = true. Тогда хотя бы в OnCreate событии формы нужно инициализировать MinutesLeft. Напр. MinutesLeft := 60;
1.9K
30 октября 2006 года
Cool Xacker
148 / / 06.06.2006
Вот смотри:
Цитата:
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;// переводим значение в минуты

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог