Разработка технического и эскизного проектов программы "Будильник", страница 2

Компонент TForm1

Свойства:

Caption – Будильник;

События:

FormCreate – создание окна.

1 – компонент TEdit1

Свойства:

Text – Вставаааай!

События:

Нет.

2 – компонент TLabel1

Свойства:

Caption – Сообщение.

3 – компонент TLabel3

Свойства:

Caption – : ;

Font – размер 16.

4 – компонент TLabel3

Свойства:

Caption – 00;

Font – размер 12.

5 – компонент TLabel4

Свойства:

Caption – 00;

Font – размер 12.

6 – компонент TUpDown1

События:

UpDown1Click – изменения значения часов во времени срабатывания будильника.

7 – компонент TUpDown2

События:

UpDown2Click – изменения значения минут во времени срабатывания будильника.

8 – компонент TButton1

Свойства:

Caption – Ok.

События:

Button1Click – активизация работы будильника (начало сравнения значения введенного момента времени с текущим).

9 – компонент TTimer1

События:

Timer1Tick – сравнение значения введенного момента времени с текущим моментом времени.

Обработчик FormCreate предполагает инициализацию некоторых свойств приложения: текстового значения Label3 и Label4, заголовока приложения (Application.Title), звукового файла (процедура SetSound).

procedure TForm1.FormCreate(Sender: TObject);

begin

Label3.Caption := '00';

Label4.Caption := '00';

Application.Title := 'Будильник';

SetSound;

end;

Продедура SetSound – загрузка звукового файла для последующего воспроизведения. Создаем компонент TMediaPlayer, получаем путь к файлу '\media\chord.wav' в директории Windows, пытаемся открыть компонент TMediaPlayer для воспроизведения.

pWinDir – путь в директорию Windows.

MediaPlayer – компонент для воспроизведения звука.

procedure TForm1.SetSound;

var

pWinDir: PChar;

begin

MediaPlayer := TMediaPlayer.Create(Form1);

MediaPlayer.ParentWindow := Form1.Handle;

MediaPlayer.Visible := False;

GetMem(pWinDir,80);

GetWindowsDirectory(pWinDir,80);

MediaPlayer.FileName := pWinDir + '\media\chord.wav';

try

MediaPlayer.Open;

except

on EMCIDeviceError do ;

end;

end;

Обработчик UpDown1Click – установка значения часов в моменте времени срабатывания сигнала будильника.

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown1.Position > 23

then UpDown1.Position := 0;

if UpDown1.Position < 10

then Label3.Caption := '0' + IntToStr(UpDown1.Position)

else Label3.Caption := IntToStr(UpDown1.Position);

end;

Обработчик UpDown1Click – установка значения часов в моменте времени срабатывания сигнала будильника.

procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown2.Position > 59

then UpDown2.Position := 0;

if UpDown2.Position < 10

then Label4.Caption := '0' + IntToStr(UpDown2.Position)

else Label4.Caption := IntToStr(UpDown2.Position);

end.


Рисунок 2.3 – Установка значения часов во времени будильника

Рисунок 2.4 – Установка значения минут в времени будильника


Обработчик Button1Click.

Запоминаем установленное время (AlarmHour – часы, AlarmMin - минуты). Сворачиваем программу в трей с подсказкой времени срабатывания сигнала будильника. Включаем проверку таймера установкой переменной AlarmSet в значение true.

procedure TForm1.Button1Click(Sender: TObject);

begin

AlarmHour := StrToInt(Label3.Caption);

AlarmMin := StrToInt(Label4.Caption);

AlarmSet := true;

CreateTrayIcon(1,'Будильник '+

Label3.Caption+':'+Label4.Caption);

Form1.Hide;

end;

Процедура CreateTrayIcon.

Заполняем структуру, необходимую для создания иконки в трее.

procedure TForm1.CreateTrayIcon(n: integer; Tip: string);

var

icondata: TNotifyIconData;

begin

with icondata do

begin

cbSize := SizeOf(TNotifyIconData);

Wnd := Self.Handle;

uId := n;

uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

uCallBackMessage := NOTIFY;

hIcon := Application.Icon.Handle;

StrPCopy(szTip,Tip);

end;

Shell_NotifyIcon(NIM_ADD, @icondata);

end;

Обработчик Timer1Tick.

Получаем текущее время в переменные curHour (часы) и curMin (минуты). Если время срабатывания сигнала установлено, проверяем, совпадает ли текущее время с установленным. Если совпадает, то выключаем будильник, выдаем введенное сообщение, проигрываем звук, показываем окно Form1 и удаляем иконку из трея.

procedure TForm1.Timer1Tick(Sender: TObject);

var

curHour,curMin: word;

begin

curHour := HourOf(Now);

curMin := MinuteOf(Now);

if AlarmSet

then begin

if (curHour = AlarmHour) and (curMin = AlarmMin)

then begin

Form1.Show;

AlarmSet := false;

try

MediaPlayer.Play;