РАССМОТРЕНИЕ АНАЛОГОВЫХ ПРОДУКТОВ



ЧАСЫ РАДАР- часы с дополнительными функциями; поиск файлов, музыки, видео, изображений; управление лотками CD-дисководов; очистка списка недавно

использовавшихся документов. Автозагрузка программы "Часы Радар", полупрозрачность, "прилипание" к краям экрана, возможность смены значка программы в TrayBar.

 

 Будильник с говорящими часами - после установки даты и времени требуется нажать на кнопку пуска - будильник заведен. Можно ввести комментарий. Затем кнопкой отправить будильник в трей. По истечении времени будильник выскочит на стол и будет трезвонить пока не нажмете кнопку останова.

Если время сигнала ожидается не скоро, то будильник можно закрыть - все значения запоминаются в INI файле.

Будильник может сообщать текущее время голосом через заданный интервал времени.

Установка интервала делается в настройках. Есть фиксированные значения: через 1, 5, 10, 30 мин и 1 час, а так же установка любого другого значения.

Голос, произносящий время (типа: три часа одна минута) можно выбирать (пока) из двух возможных.

В системе должен быть установлен кодек для проигрывания MP3.

Установка программы не требуется. Скачать Часы на рабочий стол. Говорящие часы.

AClockпризван не только помочь, но еще и не навредить своим присутствием.

В данной версии реализовано:

1. Поддержка тем;

2. Настраиваемая прозрачность;

3. Прозрачность для мыши (при включенной опции кликать можно сквозь часы);

4. Опция «Всегда наверху»;

5. Автозапуск;

6. Тиканье;

7. Включение/выключение обычных стрелок (в редакторе настраивается 2 вида каждой стрелки);

8. Включение/выключение секундной стрелки;

9. Смена надписи;

10. Сохранение текущего состояния (тема, положения и т.д.);

11. Настройка для показа времени другого региона;

12. Добавлена возможность в темах отключать простые стрелки;

13. Добавлена возможность включать/выключать зависимость часовой стрелки от минутной;

14. Добавлена возможность маштабирования;

15. Добавлена возможность выбора хода секундной стрелки (обычный, реалистичный (с подергиванием), плавный);

16. Добавлен режим всегда снизу.

Изменения:

1.Заменены все стандартные темы;

Исправления:

1. Исправлен баг приводивший к утечке памяти;

2. Проведена оптимизации работы с памятью, теперь часики вместо 20Mb отъедают всего 400Kb. NEW!!!

В следующих версиях будет добавлено:

1. Будильник;

2. Возможность отображать время других временных зон.

Если Вам понравятся часы, но чего-то, по Вашему мнению, не хватает, напишите нам и мы обязательно добавим это в следующей версии.

В пакет входит:

1. Сами часики

2. Редактор тем

3. 5 Дополнительных тем.


ТЕХНИЧЕСКАЯ ЧАСТЬ

ФУНКЦИОНАЛЬНАЯ СПЕЦИФИКАЦИЯ


2.2 ТЕХНИЧЕСКИЙ ПРОЕКТ


ОТДЕЛЬНЫЕ АЛГОРИТМЫ И ПЕРЕМЕННЫЕ

Пользователь задаёт время для оповещения, выбирает мелодию звонка и подтверждает операцию. Время пользователь будет выбирать в компоненте TimePicker, о чём его и предупреждает подсказка, а 2 другие операции можно реализовать в обработчике события OnClick кнопки AlarmBttn:

void __fastcall TMainForm::AlarmBttnClick(TObject *Sender)

{

do

{

if(AlarmOpenDialog->Execute()) // Если диалог открытия запущен…

{

MediaPlayer->FileName=AlarmOpenDialog->FileName; // …выберем файл для воспроизведения медиаплейером.

}

if(MediaPlayer->FileName=="") Application->MessageBox("Вы должны выбрать мелодию для оповещения!", "Будильник", MB_OK+MB_ICONWARNING);

}

while(MediaPlayer->FileName=="");

iAlarmHours=StrToInt(FormatDateTime("h", TimePicker->Time));

iAlarmMinutes=StrToInt(FormatDateTime("n", TimePicker->Time));

MediaPlayer->Open();

bIsTimerOn=true; // Таймер будильника запущен.

}

 

FormatDateTime("h", TimePicker->Time): мы переводим время из свойства TimePicker->Time в «удобоваримую» форму в виде строки. После этого строку преобразуем в целое, воспользовавшись функцией StrToInt, и сохраняем

результат в переменных:

iAlarmHours=StrToInt(FormatDateTime("h", TimePicker->Time));

iAlarmMinutes=StrToInt(FormatDateTime("n", TimePicker->Time));

Теперь нагрузим работой наш бедный таймер, которому каждую секунду (если, конечно запущен будильник bIsTimerOn=true;), помимо отрисовки текущего времени, предстоит сравнивать его с заданным, чтобы решить, не пора ли врубить музыку:

void __fastcall TMainForm::TimerTimer(TObject *Sender)

{

TimePanel->Caption=TimeToStr(Time());

if(bIsTimerOn==true) // Если будильник включён…

{

iHours=StrToInt(FormatDateTime("h", Time()));

iMinutes=StrToInt(FormatDateTime("n", Time())); // …получим текущее время…

if((iHours==iAlarmHours) && (iMinutes>=iAlarmMinutes)) // …и если оно совпало с заданным пользователем…

{

MediaPlayer->Play(); // …играем!

}

if(MediaPlayer->Mode==mpPlaying) bIsTimerOn=false // Если медиаплейер уже играет, то будильник можно выключить.

}

}


ЛИСТИНГ ПРОГРАММЫ

TimePanel->Caption=TimeToStr(Time());

if(bIsTimerOn==true) //если будильник включен

{

iHours=StrToInt(FormatDateTime("h",Time()));

iMinutes=StrToInt(FormatDateTime("n",Time())); //текущее время

if((iHours==iAlarmHours) & (iMinutes>iAlarmMinutes))

{

if(MediaPlayer->Mode==mpPlaying)bIsTimerOn=false; //если плеер уже играет, то будильник можно выключить

}

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::AlarmBttnClick(TObject *Sender)

{

do

{

if(AlarmOpenDialog->Execute()) //если диалог открытия запущен...

{

MediaPlayer->FileName=AlarmOpenDialog->FileName; //...выбираем файл для воспроизведения медиаплейером

}

if(MediaPlayer->FileName=="") Application->MessageBox("Вы должны выбрать мелодию для оповещения!", "Будильник", MB_OK+ MB_ICONWARNING);

}

 while(MediaPlayer->FileName=="");

 iAlarmHours=StrToInt(FormatDateTime("h", TimePicker->Time));

 iAlarmMinutes=StrToInt(FormatDateTime("n", TimePicker->Time));

 MediaPlayer->Open();

 bIsTimerOn=true; //таймер будильника включен

 }

//---------------------------------------------------------------------------

void __fastcall TForm1::CancelAlarmBttnClick(TObject *Sender)

{

bIsTimerOn=false;

if(MediaPlayer->Mode==mpPlaying) MediaPlayer->Stop();

TimePicker->Time=StrToTime("0:00:00"); //сброс на ноль

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

ShellExecute (Form1->Handle, "open", "справка.hnd", NULL, NULL, SW_RESTORE);  

}

//---------------------------------------------------------------------------
2.5 ПРОЕКТИРОВАНИЕ ИНТЕРФЕЙСА

С панели Standart выбираем GroopBox и помещаем его на форму

Задаем  следующие значения свойств GroupBox:

Caption – Время оповещения:, Name – AlarmBox.

На GroopBox с той же панели помещаем кнопки Задать, Отменить, Справка

Добавил на GroopBox панель для выведения на нее текущего времени.

Для этого нам понадобится компонент Timer (вкладка System)

Добавляем компонент DateTimePicker, расположенного на вкладке Win32 палитры компонентов. Он будет работать в качестве таймера для будильника.

Также на форму поместим компонент MediaPlayer с вкладки System и OpenDialog с вкладки Dialogs.

 

Затем программируем каждый объект и получаем довольно не сложные часы со встроенным будильником

ПРОЕКТИРОВАНИЕ СПРАВКИ

Справочную информацию я изготовил при помощи программы Help Cruiser.

создаем новую справку

добавляем, удаляем и переименуем разделы

После этого заполняем справку нужной нам информацией.

И оформляем текст при помощипанели форматирования

Затем сохраняем нашу справку

 и помещаем ее в программу


2.7 ТЕСТИРОВАНИЕ

Для начала устанавливаем время в таймере. Затем нажимаем кнопку Задать

Выбираем мелодию и ждем звонка.

Справку можно посмотреть нажав


Дата добавления: 2018-05-02; просмотров: 355; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!