- •Задача 1. Конвертер
- •Задача 2. Фунты-килограммы
- •Задача 3. Сила тока.
- •Задача 4. Сопротивление
- •Задача 5. Кафе
- •Задача 6. Любимый напиток
- •Задача 7. Электроэнергия
- •Задание 8. Осаго
- •Задание 9.Просмотр иллюстраций
- •Задача 10. Калькулятор
- •Задача 11. Калькулятор-2
- •Задача 12.Секундомер
- •Задача 13. Угадай число
- •Задание 14.Угадай число-2
- •Задание 15.Запуск Internet Explorer
- •Задание 16.Конвертор
- •Задание 17.Конвертор 2
- •Задание 18.Погода
- •Задание 19.Средняя температура
- •Задание 20. Простая база данных
- •Задание 21. Редактор текста
- •Задание 22. Приветствие
- •Задача 23. Олимпийский флаг
- •Задание 24. Диаграмма
- •Задача 26. Круговая диаграмма.
- •Задача 27. Просмотр иллюстраций.
- •Задача 28 .Часы
- •Задача 29. Пинг понг.
- •Задача 30. Полет в облаках
- •Задача 31.Баннер
- •Задача 32. Фоновый рисунок
- •Задача 33. Wav
- •Задача 34. Mp3 Player
- •Задача 35.Воспроизведение midi
- •Задача 36.Compact Disk Player (версия 1)
- •Задача 37.Compact Disk Player (версия 2)
- •Задача 38.VideoPlayer
- •Задача 39. Анимация
- •Задача 40. Записная книжка
- •Задача 41 Магазин
- •Задача 42. Ежедневник
- •Задача 43. Сапер
- •Часть 1. Примеры и задачи
- •Часть 1. Примеры и задачи
- •Задача 44 Игра 15
- •Часть 1. Примеры и задачи
- •Задача 45. Игра "Собери картинку" (Puzzle)
- •Задача 46 Игра "Парные картинки"
- •Задача 47. Экзаменатор
- •Задача 48. Экзаменатор-2
- •Задача 49. Календарь
- •Задача 50. Будильник
- •Задача 51. Очистка диска
- •Задача 52.Печать
- •Задачи для самостоятельного решения Задача 1. Скидка
- •Задача 2.Доход по вкладу
- •Задача 3. Таблица умножения
- •Задача 4.Поездка на автомобиле
- •Задача 5.Стоимость разговора
- •Задача 6. Стеклопакет
- •Задача7. Калькулятор
- •Задача 8. Электроэнергия
- •Задача 9. Добрый день
- •Задача 10. Часы
- •Задача 11. Узоры
- •Задача 12. Курс доллара
- •Задача 13. Диаграмма
- •Задача 14. Домашние животные
- •Задача 15. Кораблик
- •Задача 16. Сапер
- •Задача 17 .Экзаменатор
- •Задача 18. База данных "Расходы"
Задача 27. Просмотр иллюстраций.
Программа Просмотр иллюстраций (Рис. 34) позволяет просмотреть файлы формата JPEG, например — фотографии. Выбор рабочей папки (каталога) выполняется в стандартном окне Выбор папки. Иллюстрации можно просматривать по кадрам или в режиме слайд-шоу.
Рис 34
Вывод:
Листинг
#include <FileCtrl.hpp> // для доступа к SelectDirectory tinclude <jpeg.hpp> // обеспечивает работу с // иллюстрациями в формате JPEG
AnsiString aPath; // каталог, в котором находится // иллюстрация TSearchRec aSearchRec; // рез-т поиска файла
102 Часть 1. Примерыизадачи
void fastcall TForml::FormCreate(TObject *Sender)
aPath = ""; // текущий каталог - каталог, из которого // запущена программа FirstPicture(); // показать картинку, которая есть в // каталоге программы
// щелчокнакнопкеКаталог void fastcall TForml::ButtonlClick(TObject *Sender)
if (SelectDirectory("Выберите каталог, в котором" " находятся иллюстрации", "", aPath) ! = О
// пользователь выбрал каталог и щелкнул на ОК aPath = aPath + " \ \"; if ( FirstPicture() ) // вывести иллюстрацию CheckBoxl->Enabled = true; else Labell->Caption = "В каталоге " + aPath + " нет jpg-иллюстраций." ;
// вывести первую картинку и найти следующую bool fastcall TForml::FirstPicture() { Imagel->Visible •- false; // скрыть компонент Imagel Button2->Enabled = false; // кнопка Дальше недоступна CheckBoxl->Enabled = false; CheckBoxl->Checked = false; Labell->Caption = if (FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)
Imagel->Picture->LoadFromFile(aPath+aSearchRec.Name);
Графика 103
Imagel->Visible = true; Labell->Caption = aPath + aSearchRec.Name; if ( FindNext(aSearchRec) == 0 ) // найтислед. ил.
// иллюстрацияесть Button2->Enabled = true; // теперькнопкаДальше // доступна CheckBoxl->Enabled = true; return true;
}
} return false;
// вывеститекущуюинайтиследующуюкартинку bool fastcall TForml::NextPicture()
Imagel->Picture->LoadFromFile(aPath+aSearchRec.Name); Labell->Caption = aPath + aSearchRec.Name; if ( FindNext(aSearchRec) != 0 ) // найтислед. // иллюстрацию
// иллюстрацийбольшенет Button2->Enabled = false; // теперькнопкаДальше // недоступна CheekBoxl->Enabled = false; return false;
return true;
// щелчокнакнопкеДальше void fastcall TForml::Button2Click(TObject *Sender)
104 Часть 1. Примеры и задачи
NextPicture();
// щелчок на переключателе "непрерывно" void fastcall TForml::CheckBoxlClick(TObject *Sender)
{
if ( CheckBoxl->Checked) Timerl->Enabled = true; // слайд-шоу else Timerl->Enabled = false; // покадрам
// Сигналоттаймера - вывестиследующуюиллюстрацию void fastcall TForml::TimerlTimer(TObject *Sender) { if ( ! NextPicture()) Timerl->Enabled = false;
Задача 28 .Часы
В окне программы Часы (рис. 35) находится изображение идущих часов, которые показывают текущее время.
Рис 35
Вывод: Мы научились создавать часы которые соответствуют времени на компьютере путём написания кода и использования компонента Timer.
Листинг
#include <vcl.h>
#pragma hdrstop
#include "DateUtils.hpp"
#include "math.h"
#define R 75
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x0, y0;
int ahr,amin,asec;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TDateTime t;
ClientHeight = (R + 30)*2;
ClientWidth = (R + 30)*2;
x0 = R + 30;
y0 = R + 30;
t = Now();
ahr = 90 - HourOf(t)*30-(MinuteOf(Today() ) / 12) *6;
amin = 90 - MinuteOf(t)*6;
asec = 90 - SecondOf( Today() )*6;
Timer1->Interval = 1000;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
__fastcall TForm1::Vector (int x0, int y0, int a, int l)
{
#define TORAD 0.0174532
int x, y;
Canvas->MoveTo(x0,y0);
x = x0 + l * cos(a*TORAD);
y = y0 - l * sin(a*TORAD);
Canvas->LineTo(x,y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int x, y;
int a;
int h;
TBrushStyle bs;
TColor pc;
int pw;
bs = Canvas->Brush->Style;
pc = Canvas->Pen->Color;
pw = Canvas->Pen->Width;
Canvas->Brush->Style = bsClear;
Canvas->Pen->Width = 1;
Canvas->Pen->Color = clBlack;
a = 0;
h = 3;
while ( a < 360 )
{
x = x0 + R * cos(a * TORAD);
y = y0 - R * sin(a * TORAD);
Form1->Canvas->MoveTo(x,y);
if ( (a % 30) == 0 )
{
Canvas->Ellipse(x-2,y-2,x+3,y+3);
x = x0 + (R+15) * cos(a * TORAD);
y = x0 - (R+15) * sin(a * TORAD);
Canvas->TextOut(x-5,y-7,IntToStr(h));
h--;
if ( h == 0 ) h = 12;
}
else
Canvas->Ellipse (x-1, y-1, x+1, y+1) ;
a = a + 6;
}
Canvas->Brush->Style = bs;
Canvas->Pen->Width = pw;
Canvas->Pen->Color = pc;
TDateTime t;
Canvas->Pen->Color = clBtnFace;
Canvas->Pen->Width = 3;
Vector(x0,y0, ahr, R-20);
Vector(x0,y0, amin, R-15);
Vector(x0,y0, asec, R-7);
t = Now();
ahr = 90 - HourOf(t)*30-(MinuteOf(t)% 12)*6;
amin = 90 - MinuteOf(t)*6;
asec = 90 - SecondOf(t)*6;
Canvas->Pen->Width = 2;
Canvas->Pen->Color = clBlack;
Vector(x0,y0, ahr, R-20);
Canvas->Pen->Width = 3 ;
Canvas->Pen->Color = clBlack;
Vector(x0,y0, amin, R-15);
Canvas->Pen->Width = 1;
Canvas->Pen->Color = clYellow;
Vector(x0,y0, asec, R-7);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
TDateTime t;
Canvas->Pen->Color = clBtnFace;
Canvas->Pen->Width = 3;
Vector(x0,y0, ahr, R-20);
Vector(x0,y0, amin, R-15);
Vector(x0,y0, asec, R-7);
t = Now();
ahr = 90 - HourOf(t)*30-(MinuteOf(t)% 12)*6;
amin = 90 - MinuteOf(t)*6;
asec = 90 - SecondOf(t)*6;
Canvas->Pen->Width = 2;
Canvas->Pen->Color = clBlack;
Vector(x0,y0, ahr, R-20);
Canvas->Pen->Width = 3 ;
Canvas->Pen->Color = clBlack;
Vector(x0,y0, amin, R-15);
Canvas->Pen->Width = 1;
Canvas->Pen->Color = clYellow;
Vector(x0,y0, asec, R-7);
}
//---------------------------------------------------------------------------
