7 мая 2012 г.

Продолжим собирать будильник

                                   Собираем по винтикам будильник.



Вот как у меня выглядит будильник








это кнопка взвода будьльника
procedure TForm1.SpeedButton1Click(Sender: TObject);
var c:string;
begin

  c:='Ты не забыл что...
'; напоминалка текст
unit2.Form2.ListBox1.Items.Append(memo1.Lines.Text);
unit2.Form2.Label1.Caption:=c+' '+edit1.Text;
  statusbar1.Panels[0].Text:='Alarm set on:';
statusbar1.Panels[1].Text:=edit1.Text;
statusbar1.panels[2].text:='Alarm is activate';
  timer1.Enabled:=true; 
запускаем будильник

end;




{--- Calculate time ---}
Procedure MyTimer(Alarm:string; var curTime:string);
var sys:_systemtime;
h,m:string;
begin
GetLocalTime(sys);

h:=inttostr(sys.wHour);
if length(h)<>2 then
begin
h:='0'+h;
end;

m:=inttostr(sys.wMinute);
if length(m)<>2 then
begin
m:='0'+m;
end;

curtime:=h+':'+m;

  if curTime=Alarm then begin form1.Timer1.Enabled:=false; если текущее время совпадает с "взведенным будильником" то выключаем таймер и показываем окно с напоминанием
unit2.Form2.ShowModal;
end;

end;



А здесь в обработчике таймера вызывается наш будильник и ему передается время взвода из нижней панели в переменной с будет текущее время
procedure TForm1.Timer1Timer(Sender: TObject);
var c:string;
begin
MyTimer(statusbar1.Panels[1].Text,c);
end;

Конечно еше надо разобрать как же будильник будет звенеть, будить нас или напоминать нам важное для нас событие, самый лучший вариант когда мы можем даже выбрать mp3 мелодию а не только *.wav. Опишу и музыкальную часть будильника в следующей статье.

А сейчас давайте узнаем как же мы будем узнавать время,а вот как

GetLocalTime(sys); фу-ия получения времени ей мы передаем специальную переменную
типа _systemtime зажмите Ctrl и клацните мышкой по этому типу данных, ну мышкой не стоит стукать ))) левой кнопкой мыщи :)

и вот что мы увидим перейдя к описанию данного типа данных


PSystemTime = ^TSystemTime;
_SYSTEMTIME = record
  wYear: Word; год
  wMonth: Word; месяц
  wDayOfWeek: Word; день недели
  wDay: Word; день
  wHour: Word; час
  wMinute: Word; минута
  wSecond: Word; секунда
  wMilliseconds: Word; милисекунда
end;

  h:=inttostr(sys.wHour); 
преобразуем число (час) в строку и присваиваем перем. h
Если написать sys и добавить точку . то мгновенно срабатывает суфлер кода выскакивают возможные варианты подсказом выбираем wHour

  if length(h)<>2 then 
если длинна часа не равна двум 00:00 то добавляем нуль т.е если было 0:00 то будет 00:00 можно это сделать вот так if (h mod 2)=0 then h:='0'+h т.е проверим четность
begin
h:='0'+h;
end;

  m:=inttostr(sys.wMinute); 
получаем минуты
if length(m)<>2 then
begin
m:='0'+m;
end;

  curtime:=h+':'+m; 
соберем в одну строку и часы и минуты добавив между ними :

Вот вроде бы и все, остальное опишу в следующей пояснительной статье...

Комментариев нет:

Отправить комментарий