Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.01.2012, 18:05
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию Timer

Допустим имеем следующий код в TForm1.FormCreate

Код:
Timer1.Interval := 5000

Вопрос: Как можно получить отсчет времени в Label1?
Ответить с цитированием
  #2  
Старый 19.01.2012, 18:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Отсчет чего? Какого времени?
Указанным кодом ты просто задаешь, что таймер будет срабатывать каждые 5 секунд.
Ответить с цитированием
  #3  
Старый 19.01.2012, 21:35
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Тогда уж ставь 500 или меньше, а не 5000. Затем переводишь текущее время в String и присваиваешь Label-у. Не забываем делать ему Update.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 23.01.2012, 12:06
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Цитата:
Сообщение от lmikle
Отсчет чего? Какого времени?
Указанным кодом ты просто задаешь, что таймер будет срабатывать каждые 5 секунд.

Нужно сделать отсчет времени в Label1 на выполнение програмы. По истечении заданого времени - открывается результат набраных балов (тест). Сделал "дедовским" способом (без использования Timer1.Interval), прописав огромный кусок кода для выше поставленного задания, но интересует, может есть простейший способ реализации задания? Ведь при использовании Timer1.Interval ведется отсчет времени. Может можно его достать через функцию в 1-2 строчки?

Код:
// m - минуты
// s - секунды
// tmp_time - переменная String, для формирования строки-времени и вывода ее в Label1

procedure TForm1.Timer1Timer(Sender: TObject);
var tmp_time: String;
begin
// Делаем красивый вывод остатка времени на экран в формате 00:00
  if (m<10) Then tmp_time := '0'+IntToStr(m) Else tmp_time := IntToStr(m);
  if (s<10) Then Label1.Caption := tmp_time + ':0'+IntToStr(s) Else Label1.Caption:=tmp_time+':'+IntToStr(s);

  if ((m>0) or (s>=0)) Then
    begin
      if s>=0 Then dec (s);
      if ((s<0) and (m>0)) Then begin dec (m); s:=59; end;
    end
  Else If ((m<=0) and (s<=0)) Then
    begin
      Timer1.Enabled := False;
      Panel1.Visible:=True;
    end;

end;
Ответить с цитированием
  #5  
Старый 23.01.2012, 12:29
Аватар для Outlaw
Outlaw Outlaw вне форума
Прохожий
 
Регистрация: 23.01.2012
Сообщения: 7
Репутация: 10
По умолчанию

Как пример, отчет одной минуты.
прописываешь в процедуре таймера:
n:=n+1;
Label1.caption:=inttostr(60-n)+' секунд!';
P.S. Естественно интервал ставишь секундный
Ответить с цитированием
  #6  
Старый 24.01.2012, 01:52
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Цитата:
Сообщение от Outlaw
Как пример, отчет одной минуты.
прописываешь в процедуре таймера:
n:=n+1;
Label1.caption:=inttostr(60-n)+' секунд!';
P.S. Естественно интервал ставишь секундный
Да. Но здесь мы всеравно считаем секунды и минуты вручную. А хотелось бы получить остаток времени непосредственно с Timer1.Interval
Ответить с цитированием
  #7  
Старый 24.01.2012, 02:05
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

При запуске получаешь текущее время:
Код:
var
  Time : TDateTime;
begin
   Time := Now;
по завершению:
Код:
  Now - Time;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 24.01.2012, 18:17
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Цитата:
Сообщение от angvelem
При запуске получаешь текущее время:
Немного не то, так как нам нужно выводить посекундно остаток времени. Наверное, для реализации первоначального задания всетаки прийдется написать кусок программы, для подсчета минут и секунд:

Код:
if ((m>0) or (s>=0)) Then
    begin
      if s>=0 Then dec (s);
      if ((s<0) and (m>0)) Then begin dec (m); s:=59; end;
    end
  Else If ((m<=0) and (s<=0)) Then
    begin
      Timer1.Enabled := False;
      Panel1.Visible:=True;
    end;

Всем спасибо за полемику!

Последний раз редактировалось vah-smile, 25.01.2012 в 17:03.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter