Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > как сделать таймер


Автор: ConstantinXXX 28.7.2007, 21:39
как сделать таймер реагирующий на дату и время, т.е. например в 1.09.2008 будет деньриждение моего брата, чтоб он включил комп и у него вылезло сообщение о поздравлении? Например если он включит комп 2.09.2008 то тоже вылезлоб сообщение, что поздровляет с прошедшим праздником? если не трудно помогите... smile

Автор: dumb 28.7.2007, 23:31
пуск -> панель управления -> назначенные задания.

Автор: former 29.7.2007, 18:40
Я делал так. Добавлял программу в автозагрузку. Каждый раз при запуске системы она проверяла дату и, если она совпадает то, появлялась открытка во весь экран, в противном случае выгружалась.

Автор: ALeXandrK 30.7.2007, 01:33
Ну вообще конечно зачем изобретать велосипед, когда он уже есть
dumb:
Цитата

пуск -> панель управления -> назначенные задания.

или куча программ на эту тему, кот. можно скачать в интернете smile 

Но если очень хочется, то можно написать программу, но не совсем такую как предложил ConstantinXXX.
Компьютер может работать и больше чем сутки... тогда его способ тут не подойдет.
В программе, например, сверять дату при запуске и вызывать нужное событие, а потом прибавлять к дате следующей
проверки время до того, как настанут следующие сутки... и по кругу....

Ну автозагрузка и все такое само собой...

Цитата

как сделать таймер реагирующий на дату и время...


Таймер делать не надо... берешь стандартный таймер, а в событие OnTimer прописываешь все свои события (праздники и т.п.).
В свойстве Interval ставишь время до следующего наступления OnTimer и всё... дальше только фантазия по способу поздравления smile 

Банальный пример события OnTimer:
Код

procedure TTimer.OnTimer(Sender: TObject)
begin
  if FormatDateTime('dd.MM',Now) = '01.01' then ShowMessage('С НОВЫМ ГОДОМ!');
  Timer.Interval := 60*60*24*1000; // Новый запуск OnTimer будет через сутки
end;

Автор: ConstantinXXX 30.7.2007, 15:25
всем спасибо я уже решил эту проблему, если будет время выложу исходничек, просто пишу не с домашнего компа. Тут нет исходников, но смысл прост. Берем сначало год, вычетаем его из нужного например 2006 а нам нужно 2007 получаеться 1 потом берем дату и т.д. когда хоть одно число будет равным 0 или меньше то значит этот день настал! smile

Автор: former 30.7.2007, 17:09
ALeXandrK, я думаю так лучше будет: 

Код

procedure TTimer.OnTimer(Sender: TObject)
begin
  if FormatDateTime('dd.MM',Now) = '01.01' then 
  begin
      ShowMessage('С НОВЫМ ГОДОМ!');
      Timer.Interval := 60*60*24*1000; // Новый запуск OnTimer будет через сутки
  end
  else if FormatDateTime('dd.MM',Now) > '01.01' then ShowMessage('С НАСТУПИВШЕМ НОВЫМ ГОДОМ!');  
end;


Пользователь может ведь и не включать в этот день компьютер.
Кроме того:
1) надо определять разницу в датах при автозагрузке и в соответствии с этим устанавливать таймер. 

2) ввести переменную, отлавливающую количество раз, которое может быть показано поздравление (1,2,3... раза). А то потом так и будет выскакивать. Можно конечно заложить несколько поздравлений и автоматически изменять дату (с расчётом на несколько лет  smile )

Дорабатывать и усовершенствовать можно до бесконечности. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)