Компонент 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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.