- •Задача 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. База данных "Расходы"
Задача 7. Электроэнергия
Программа Электроэнергия (рис. 8, 9, 10) (показывает, как одна функция может обрабатывать события разных, но однотипных компонентов.
Рис. 8
Рис. 9
Рис. 10
Вывод: В этом задании мы узнали как одна функция может обрабатывать события разных, но однотипных компонентов.
Листинг
/---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
/ * задать, чтособытие KeyPress длякомпонентов Edit2 и Edit3 обрабатываетфункция EditKeyPress */
Edit2->OnKeyPress = Edit1KeyPress ;
Edit3->OnKeyPress = Edit1KeyPress ;
/ * чтобы процедура обработки события KeyPress могла определить, в каком поле пользователь нажал клавишу, запишем в свойство Tag каждого компонента Edit целую константу */
Edit1->Tag = 1;
Edit2->Tag = 2;
Edit3->Tag = 3;
}
//---------------------------------------------------------------------------
// нажатиеклавишивполередактировани
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
TEdit * Edit; // компонентEdit
Edit = (TEdit*)Sender;
/* теперь ed - это компонент Edit, в полекоторого пользователь нажал клавишу */ /* Реакция компонентовна нажатие всех клавиш, за исключением <Enter> одинаковая. *
if (Key == VK_RETURN)
{
switch (Edit->Tag) {
case 1 : Edit2->SetFocus() ; break;* клавиша нажата в поле Editl переместить курсор в поле Edit3 */
case 2 : Edit3->SetFocus() ; break; /* клавиша нажата в поле Edit2 переместить курсор в поле Edit3 */
case 3: Button1->SetFocus() ; break;/* клавиша нажата в поле Edit3
сделать активной кнопку Вычислить */
}
return;
}
if (((Key >= '0') && (Key <= '9')) ||
(Key == VK_BACK))// цифраили<>Backspace>
{
return;
/ / остальные символы запрещены
}
if (( Key == ',') || (Key == '.'))
{
Key = DecimalSeparator;
if ( (Edit->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
Key = 0;
}
//---------------------------------------------------------------------------
// щелчок на кнопке Вычислит
void __fastcall TForm1::Button1Click(TObject *Sender)
{
floatprior, curr; // предыдущее и текущее показания
floattariff; // тариф - цена 1 кВт/час
float summ; // суммакоплате
prior = StrToFloat(Edit1->Text);
curr = StrToFloat(Edit2->Text);
tariff = StrToFloat(Edit3->Text);
// проверить исходные данные
if ( curr < prior)
{
MessageDlg("текущее значение показания счетчика не"
" может быть меньше предыдущего.",
mtWarning, TMsgDlgButtons() << mbOK,0);
return;
}
summ = (curr - prior) * tariff;
Label4->Caption = "Сумма к оплате: " +
FloatToStrF(summ, ffCurrency, 6,2);
}
//---------------------------------------------------------------------------
Задание 8. Осаго
Программа ОСАГО (рис. 11), позволяет рассчитать размер страховой премии подлежащей уплате по договору обязательного страхования гражданской ответственности. Демонстрирует использование компонента ComboВох, обработку одной функцией событий от нескольких компонентов. Программа спроектирована таким образом, что кнопка ОК доступна только в том случае, если введены все данные, необходимые для расчета.
Рис. 11
Вывод: В этой задаче мы научились использовать компонентсоmbоВох, узнали об обработке одной функцией событий от нескольких компонентов.
Листинг
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString reg[8] = {"Москва","Московская обл.",
"Санкт-Петербург",
"Нижний Новгород",
"Ленинградская обл.",
"Ростов-наДону", "Самара",
"Мурманск"};
int Cb[6][5] = {{1,-1,-1,-1,-1},
{2,-1,-1,-1,-1},
{3,1,-1,-1,-1},
{4,1,-1,-1,-1},
{5,2,1,-1,-1},
{6,3,1,-1,-1}};
float Kt[8] = {1.8,1.6, 1.8,1.3,1,1,1,1};
float Kb[7] = {2.3, 1.55, 1.4, 1, 0.95,0.9};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
int i,n;
n = sizeof (Kt) / sizeof (float);
for (i=0; i<n; i++)
ComboBox1->Items->Add(reg[i]);
/* событие Change всех компонентов обрабатывает
функция TForml::Change */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float aTb; // базовая ставка тарифа
float aKt; // коэф. тарифа
float aKb; // коэф. безаварийности
float aKvs; // коэф. водительского стажа
float aKo; // коэф., учитывающий количество лиц
float aKm; // коэф. мощности двигателя
float aKs; // коэф., учитывающей период использования ТС
int pcb,ccb; // предыдущий и текущий класс безаварийности
int nss; // количество страховых случаев предыдущего
// периода
aTb = StrToFloat (Edit3->Text) ;
aKt = Kt[ComboBox1->ItemIndex];
pcb = StrToInt(Edit1->Text);
nss = StrToInt(Edit2->Text);
ccb = Cb[pcb][nss];
if ( ccb != -1)
aKb = Kb[ccb];
else aKb = 2.45;
aKb = Kb[ccb];
// коэф. водительского стажа
switch (ComboBox2->ItemIndex)
{
case 0: aKvs = 1.3; break;
case 1: aKvs = 1.2; break;
case 2: aKvs = 1.15; break;
case 3: aKvs = 1.0; break;
// коэф., учитывающей количестволиц, допущенных к
//управлению
if (CheckBox1->Checked)
aKo = 1;
else
aKo = 1.5;
switch (ComboBox3->ItemIndex)
{
case 0 : aKm = 0.5; break;
case 1 : aKm = 0.7; break;
case 2 : aKm = 1.0; break;
case 3 : aKm = 1.0; break;
case 4 : aKm = 1.5; break;
case 5 : aKm = 1.7; break;
case 6 : aKm = 1.9; break;
}
switch (ComboBox4->ItemIndex)
{
case 0 : aKs = 0.7; break;
case 1 : aKs = 0.8; break;
case 2 : aKs = 0.9; break;
case 3 : aKs = 0.95; break;
case 4 : aKs = 1.0; break;
}
float T;
AnsiString st;
T = aTb * aKt * aKb * aKvs * aKo * aKm *aKs;
st = "Базовая ставка тарифа: " +
FloatToStrF(aTb,ffCurrency,5,2)+
"\nКоэф. тарифа: " + FloatToStrF(aKt,ffGeneral,2,2)+
"\nКоэф. безопасности: " +
FloatToStrF(aKb,ffGeneral,2,2)+
"\nКоэф. водительского стажа: " +
FloatToStrF(aKvs,ffGeneral,2,2)+
"\nКоэф. кол-ва лиц, допущеных к управлению: " +
FloatToStrF(aKo,ffGeneral,2,2)+
"\nКоэф. мощности двигател: " +
FloatToStrF(aKm,ffGeneral,2,2)+
"\nКоэф. периода использования ТС: " +
FloatToStrF(aKs,ffGeneral,2,2)+
"\n\nТариф: " + FloatToStrF(T,ffCurrency,5,2);
ShowMessage(st);
}}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox2Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox3Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox4Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3Change(TObject *Sender)
{
Button1->Enabled =
(ComboBox1->ItemIndex != -1)&&
(ComboBox2->ItemIndex != -1) &&
(ComboBox3->ItemIndex != -1) &&
(ComboBox4->ItemIndex != -1) &&
(Edit1->Text.Length() != 0) &&
(Edit2->Text.Length() != 0) &&
(Edit3->Text.Length() != 0);
}
//---------------------------------------------------------------------------
