- •Задача 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. База данных "Расходы"
Задание 9.Просмотр иллюстраций
Программа Просмотр иллюстраций (рис.12) демонстрирует использование компонентов ListBox и openDiaiog. Выбор каталога (папки) выполняется в стандартном окне Открыть файл, которое становится доступным в результате щелчка по кнопке Выбор. Отображение диалога осуществляет компонент OpenDiaiog.
Рис. 12
Вывод: В этом задании мы научились открывать изображения с помощью компонентов OpenDialog и Image.
Листинг
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <jpeg.hpp> // обеспечивает работу с илюстрацией в формате JPEG
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
AnsiString aPath; //каталок котором находится илюстрация
TSearchRec aSearchRec; // резпоискафайлов
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Image1->Proportional = true;
if (FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)
{
ListBox1->Items->Add(aSearchRec.Name);
while ( FindNext(aSearchRec) == 0 )// найтислед. ил.
{
ListBox1->Items->Add(aSearchRec.Name);
}
ListBox1->ItemIndex = 0;
Label1->Caption = ListBox1->Items->Strings[0];
Image1->Picture->LoadFromFile(aPath + ListBox1->Items->Strings[0]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
int n = ListBox1->ItemIndex; // номервыбранногоэл.
Label1->Caption = ListBox1->Items->Strings[n];
Image1->Picture->LoadFromFile(aPath + ListBox1-> Items->Strings[n]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if ( OpenDialog1->Execute() )
{
//пользовательвыбралфайл
ListBox1->Clear(); //очиститьсписок
aPath = ExtractFilePath(OpenDialog1->FileName);
Form1->Caption = "просмотриллюстраций - "+ aPath;
if ( FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)
{ListBox1->Items->Add(aSearchRec.Name);
while (FindNext(aSearchRec) == 0)//найтислед.илл.
{
ListBox1->Items->Add(aSearchRec.Name);
}
//опред.позицию.уст.пользователем файла
//в списке ListBox отобразим его
int n = ListBox1->Items->
IndexOf(ExtractFileName(OpenDialog1->FileName));
ListBox1->ItemIndex = n;
Label1->Caption = ListBox1->Items->Strings[n];
Image1->Picture->LoadFromFile(aPath + ListBox1->Items->Strings[n]);
}
Задача 10. Калькулятор
Программа Калькулятор (рис. 13, 14, 15) позволяет выполнить простейшие расчеты. Следует обратить внимание, что в качестве индикатора используется компонент staticText.
Рис. 13
Рис 14
Рис 15
Вывод: В этой программе мы узнали, что в качестве индикатора можно использовать компонент staticText.
Листинг
float accum; // аккумулятор (рез-твыполнения операции)
int op; /*операция:
1 - "+",-
2 - "-";
О - "выполнить" (нажатакнопка "=" */
int f; /* f == 0 - жмем первую цифру нового числа,
например, после выполнения
операции, когда на индикаторе результат.
f == 1 - ждем остальные цифры */
// конструктор формы
fastcall TForml::TForml(TComponent* Owner)
: TForm(Owner)
{
f =0; // ждем первуюцифру
op = 0; // предыдущая операция выполнена
StaticTextl->Caption = 0;
// кнопка "0"
void fastcall TForml::Btn0Click(TObject *Sender)
{
if ( f != 0)
StaticTextl->Caption = StaticTextl->Caption + "0"
// кнопка "1"
void fastcall TForml::BtnlClick(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "1";
f = 1;
38 Часть 1.Примеры и задачи
e l s e
StaticTextl->Caption = StaticTextl->Caption + "1";
// кнопка "2"
void fastcall TForml::Btn2Click(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "2";
f = 1;
else
StaticTextl->Caption = StaticTextl->Caption + "2";
// кнопка "3"
void fastcall TForml::Btn3Click(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "3";
f = 1;
}
else
StaticTextl->Caption = StaticTextl->Caption + "3"
// кнопка "4"
void fastcall TForml::Btn4Click(TObject *Sender)
{ i
f ( f == 0)
StaticTextl->Caption = "4";
Базовые компоненты 39
f = 1;
}•
else
StaticTextl->Caption = StaticTextl->Caption + "4";
// кнопка "5"
void fastcall TForml::Btn5Click(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "5";
f = 1;
}
else
StaticTextl->Caption = StaticTextl->Caption + "5"
// кнопка "б"
void fastcall TForml::Btn6Click(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "6";
f = 1;
}
else
StaticTextl->Caption = StaticTextl->Caption + "6"
// кнопка "7"
void fastcall TForml::Btn7Click(TObject *Sender)
{
if ( f == 0)
40 Часть 1. Примеры и задачи
StaticTextl->Caption = "7";
f = 1;
}
else
StaticTextl->Caption = StaticTextl->Caption
// кнопка "8"
void fastcall TForml::Btn8Click(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "8";
f = 1;
else
StaticTextl->Caption = StaticTextl->Caption + "8";
// кнопка "9"
void fastcall TForml::Btn9Click(TObject *Sender)
{
if ( f == 0)
{
StaticTextl->Caption = "9";
f = 1;
else
StaticTextl->Caption = StaticTextl->Caption + "9"
// кнопка ", " (десятичная точка)
void fastcall TForml::BtnkClick(TObject *Sender)
Базовые компоненты 41_
{
if ( f == 0)
{
StaticTextl->Caption ="0,";
f = 1;
else
if ( StaticTextl->Caption.Pos(",") == 0)
StaticTextl->Caption = StaticTextl->Caption
// кнопка "С" (сброс)
void fastcall TForml::BtnCClick(TObject *Sender)
{
StaticTextl->Caption = "0";
accum = 0;
op = 0;
f = 0; // ждем первую цифру числа
// выполнить операцию
void fastcall TForml::DoOp(void)
{
/* accum содержит результат предыдущей операции.
Сейчас надо выполнить операцию, код которой ор.
Операнд находится на индикаторе*/
float op2 = StrToFloat(StaticTextl->Caption);
switch ( op )
{
case 0 : accum = op2; break ;
case 1 : accum += op2;break;
42 Часть 1.Примеры и задачи
case 2 : accum -= op2; break;
StaticTextl->Caption = FloatToStrF(accum,ffGeneral,6,3);
// кнопка "+"
void fastcall TForml::BtnPClick(TObject *Sender)
{
/* надо выполнить предыдущую операцию,
вывести результат на индикатор, запомнить
текущую операцию и установитьрежим ввода
нового числа */
if ( f != 0)
{
// на индикаторе естьчисло
DoOp(); // выполнить предыдущую операцию
f = 0; // ждем первую цифру новогочисла
} ор
=1;
// кнопка "-"
void fastcall TForml::BtnMClick(TObject *Sender)
{
if ( f != 0)
{
// на индикаторе есть число
DoOp(); // выполнить предыдущую операцию
f = 0; // ждем первую цифру новогочисла
} ор
= 2; // запомнить текущую операцию
// кнопка "="
Базовые компоненты 43
void fastcall TForml::BtnEClick(TObject *Sender)
{
if ( f != 0)
{
DoOp(); // выполнить операцию
f = 0; // ждем первую цифру нового числа
} ор
= 0;
