Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА Цымбалюк.doc
Скачиваний:
6
Добавлен:
29.08.2019
Размер:
2.1 Mб
Скачать

Void __fastcall CreateTrayIcon (int n, AnsiString Tip);

Void __fastcall DeleteTrayIcon (int n);

      1. Перейдите на модуль Unit1.cpp и опишите реализацию процедур:

        1. Процедура создания значка на System Tray

Void __fastcall tForm1::CreateTrayIcon (int n, AnsiString Tip)

{

//заполнение структуры nidata, поля которой определяют значок на System Tray

TNotifyIconData nidata;

nidata.cbSize=sizeof(TNotifyIconData);

nidata.hWnd=Form1->Handle;

//окно приложения, которое представляет значок

nidata.uID= n; //номер значка

nidata.uFlags=NIF_ICON+NIF_MESSAGE+NIF_TIP;

nidata.hIcon=Application->Icon->Handle;

//значок

StrPCopy(nidata.szTip,Tip);

//всплывающий текст

Shell_NotifyIconW(NIM_ADD, &nidata);

//добавить значок

}

        1. Процедура удаления значка:

Void __fastcall tForm1::DeleteTrayIcon (int n)

{TNotifyIconData nidata;

nidata.cbSize=sizeof(TNotifyIconData);

nidata.hWnd=Form1->Handle;

nidata.uID=n;

//номер значка, который нужно убрать

Shell_NotifyIconW(NIM_DELETE, &nidata);

}

      1. Напишите программу при нажатии на кнопку ОК

Void __fastcall tForm1::Button1Click(tObject *Sender)

{

AnsiString st;

alrHour = UpDown1->Position;

alrMinute = UpDown2->Position;

if ((alrHour==cHour)&&(alrMinute<=cMinute) || (alrHour<cHour)) {

int r;

st.printf("Сейчас %i:%i \nБудильник установлен на %i:%i", cHour,cMinute, alrHour,alrMinute);

r=MessageDlg(st, mtWarning, TMsgDlgButtons() <<mbOK <<mbCancel,0);

if (r=mbCancel) return;

st = "Будильник."+IntToStr(alrHour)+":"+IntToStr(alrMinute);

CreateTrayIcon(1,st);

Form1->Hide();

}

st = "Будильник. "+ IntToStr(alrHour)+":"+mm(alrMinute);

CreateTrayIcon(1,st);

Form1->Hide();

}

      1. Напишите процедуру для сигнала от таймера

Void __fastcall tForm1::Timer1Timer(tObject *Sender)

{ //окно программы на экране

if (Form1->Visible) {

if (HourOf(Now()) != cHour) {

cHour =HourOf(Now()) ;

Label1->Caption=IntToStr(cHour);

}

if (MinuteOf(Now()) != cMinute) {

cMinute=MinuteOf(Now()) ;

Label3->Caption=mm(cMinute);

}

Label2->Visible =! Label2->Visible;

}

else

{ TDateTime t=Now();

if ( (alrHour==HourOf(t) ) && (alrMinute==MinuteOf(t)) )

{

PlaySound("notify.wav",0,SND_ASYNC);

DeleteTrayIcon(1);

ShowMessage(Edit1->Text);

Form1->Close();

}

}

}

    1. Самостоятельно напишите процедуру для нажатия на кнопку UpDown1 для отображения в метке Label4 выбранного в UpDown1->Position значения.

    2. Аналогично напишите процедуру для нажатия на кнопку UpDown2 для отображения в метке Label6 выбранного в UpDown1->Position значения.

  1. Задание для самостоятельного выполнения:

  1. Напишите процедуру для отображения текущего времени в окне будильник при запуске приложения.

  2. Измените программный код таким образом, чтобы при установки будильника также как и при отображении текущего времени происходило преобразование числа с ведущим нулём.

  3. Предусмотрите, чтобы показывалось и скрывалось двоеточие, расположенное в области Сигнал.

  4. Добавьте кнопку Закрыть форму для приложения.

  5. Предусмотрите при закрытии формы выдачу сообщения «Вы уверены? Закрыть приложение?».

  6. Добавьте главное меню форму, которое должно содержать команды Файл (Закрыть), Справка (О приложении).

  7. Предусмотрите во время выдачи сигнала будильника не закрытие формы, а её показ для того, чтобы была возможность установки будильника.

  8. Добавьте ListBox1 на форму вместо окна ввода Edit1. Измените программный код таким образом, чтобы текст сообщения брался от текущего значения ListBox1. Добавьте несколько событий для будильника.

  9. Добавьте ComboBox1 на форму вместо окна ввода Edit1. Измените программный код таким образом, чтобы текст сообщения брался от текущего значения ComboBox1. Добавьте несколько событий для будильника.

  10. Добавьте главное меню на форму, предусмотрите команды Файл (Открыть, Сохранить, Выход), Справка (О программе). Организуйте работу программы. Открытие и сохранение текущего времени и сообщения должно быть в выбранный файл.

  11. Добавьте главное меню на форму, предусмотрите команды Файл (Сохранить, Выход), Справка (О программе). Организуйте работу программы таким образом, чтобы время сигнала и сообщение брались из базы данных (таблица с полями Time, Text).

  12. Добавьте окно Edit2 для ввода имени пользователя. Предусмотрите работу с базой данных (таблица с полями User, Time, Text). Предусмотрите при нажатии на кнопку ОК добавление в базу данных текущего сообщения, времени сигнала и имени пользователя.

Сдайте работу преподавателю

Вопросы для контроля и самоконтроля:

  1. Компонент класса TUpDown. Свойства и методы компонента.

  2. Операторы сравнения ==, !=, <=, >=. Назначение.

  3. Операторы &&, ||. Опишите, что означают описанные в программе функции, использующие операторы.