Доба

Програма Доба залежно від часу доби виводить привітання Добрий ранок, Добрий день, Добрий вечір або Доброї ночі. Демонструє виведення тексту на поверхню форми. Слід звернути увагу на те, що незалежно від розміру шрифту, який використовується для виведення привітання, текст завжди розміщується в центрі вікна, навіть у тому випадку, якщо користувач під час роботи програми змінить розмір вікна.

Код написання програми

#include DateUtils.hpp
\\ цю бібліотеку обов’язково треба підключити для роботи функцій DateOf, MonthOf
Graphics::TBitmap *bgp; // фоновий малюнок
AnsiString sMonth[] = {"", "січня", "лютого", "березня",
"квітня", "травня", "червня",
"липня", "серпня", "вересня",
"жовтня", "листопада", "грудня"};
// конструктор форми
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
bgp = new Graphics::TBitmap();
try
{
bgp->LoadFromFile("sky.bmp");
}
catch (EFOpenError &e)
{ }
}
//обробка події Paint
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int h; // поточний час (годинник)
AnsiString mes; // повідомлення
int wt,ht; // розмір (ширина і висота) області
// виведення тексту
int x,y; // координати області виведення тексту
h=HourOf(Now());
if ( h <= 4 ) mes = "Доброї ночі!";
else if ( h < 12 ) mes = "Доброго ранку!" ;
else if ( h <= 16) mes = "Добрий день!" ;
else mes = "Добрий вечір!";
Form1->Font->Name = "Times New Roman";
//Form1->Font->Color = clBlue;
Form1->Canvas->Font->Size = 20;
// визначити розмір області виведення тексту
wt - Canvas->TextWidth(mes);
ht = Canvas->TextHeight(mes);
x = (ClientWidth - wt) / 2;
y = ClientHeight / 2 - ht;
// фонова картинка
Canvas->Draw(0,0,bgp);
// щоб область виведення тексту була прозорою
Canvas->Brush->Style = bsClear;
Canvas->TextOutA(x,y,mes);
y = y + ht; // координата нижньої межі
// області виведення тексту
// дата і день тижня
mes = FormatDateTime("Сьогодні d", Now() );
mes = mes + " " + sMonth[MonthOf(Now())] + ", "+FormatDateTime("dddd", Now() );
/* розмір шрифту виведення дати на 4 пункти менший за
від розміру шрифту привітання */
Canvas->Font->Size -= 4;
wt = Canvas->TextWidth(mes);
ht = Canvas->TextHeight(mes);
x = (ClientWidth - wt) / 2;
y = y + 6;
Canvas->TextOutA(x,y,mes);
}
void __fastcall TForm1::FormResize(TObject *Sender)
{
Form1->Refresh(); // перемалювати вікно
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *