- •Задача 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. База данных "Расходы"
Задача 51. Очистка диска
Программа Очистка диска (рис. 61) удаляет ненужные, созданные в процессе компиляции проектов C++Builder, файлы obj, tds, и резервные копии (~bpr, ~dfm, ~h, ~cpp) из указанного пользователем каталога и всех его подкаталогов. Для выбора каталога (папки) используется стандартное окно Обзор папок .
Рис 61
Вывод: В этом задании мы создали программу которая удаляет ненужные, созданные в процессе компиляции проектов C++Builder, файлы obj, tds, и резервные копии (~bpr, ~dfm, ~h, ~cpp) из указанного пользователем каталога.
Листинг
voidfastcallTMainForm::ButtonlClick(TObject *Sender) { if ( SelectDirectory("Выберите каталог","", aDirectory)) { // диалог Выбор файла завершен щелчком на ОК Label3->Caption = aDirectory; Button2->Enabled = true; // теперь кнопка Выполнить // доступна
// удаляет ненужные файлы из текущего каталога и его // подкаталогов void fastcall Clear(void)
TSearchRec SearchRec; // информация о файле или каталоге
cDir = GetCurrentDir()+"\\";
if ( FindFirst("*.*", faArchive,SearchRec) в 0) do { // проверим расширение файла int p = SearchRec.Name.Pos("."); FileExt = SearchRec.Name.Substring(p+1,MAX_PATH); if ( ( FileExt[1] =='-') || ( FileExt == "obj" ) || ( FileExt == "tds" )
)
{
MainForm->Memol-> Lines->Add(cDir+SearchRec.Name); DeleteFile(SearchRec.Name);
258 Часть 1. Примеры и задачи
while ( FindNext(SearchRec) == 0);
// обработкаподкаталоговтекущегокаталога if ( FindFirst("*", faDirectory, SearchRec) == 0) do if ((SearchRec.Attr & faDirectory) == SearchRec.Attr )
// каталоги и тоже каталоги, // но в них входить не надо!!! if (( SearchRec.Name != "." ) && ( SearchRec.Name != ".." ))
// войти в подкаталог ChDir (SearchRec. Name) ; // очистить каталог Clear(); // выйти из каталога ChDir("..");
while ( FindNext(SearchRec) ==0 );
// щелчокнакнопкеВыполнить void fastcall TMainForm::Button2Click(TObject *Sender)
{
Memol->Clear(); // очистить поле Memol ChDir(aDirectory); // войти в каталог, который выбрал // пользователь
Clear(); // очистить текущий каталог и его // подкаталоги
Игры и другие полезные программы 259
Memol->Lines->Add(""); if (n) Memol->Lines->Add("Удалено файлов: " + IntToStr(n)); else Memol->Lines->Add("В указанном каталоге нет файлов, " "которые надо удалить.");
Задача 52.Печать
Программа Счет (рис. 62), позволяет распечатать (вывести на принтер) счет.
Рис 62
Вывод: При выполнении этой задачи мы научились создавать программу, которая при нажатии на кнопку Печать выводит данные из таблицы.
Листинг:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Options<<goEditing<<goTabs ;
StringGrid1->Cells[0][0] ="";
StringGrid1->Cells[1][0] = "Наименование";
StringGrid1->Cells[2][0] = "Цена";
StringGrid1->Cells[3][0] = "Кол-во";
StringGrid1->Cells[4][0] = "Сумма";
StringGrid1->ColWidths[0] = 30;
StringGrid1->ColWidths[1] = 250;
StringGrid1->ColWidths[2] = 80;
StringGrid1->ColWidths[3] = 50;
StringGrid1->ColWidths[4] = 80;
for ( int i = 1; i < 11; i++)
if (i < 10)
StringGrid1->Cells[0][i] = " " + IntToStr(i);
else
StringGrid1->Cells[0][i] = IntToStr(i);
int w = 0;
for (int i = 0;
i < StringGrid1->ColCount; i++)
w += StringGrid1->ColWidths[i];
StringGrid1->Width = w + StringGrid1->ColCount + 1 ;
StringGrid1->Height =
StringGrid1->DefaultRowHeight * StringGrid1->RowCount + StringGrid1->RowCount + 1;
#include "Printers.hpp"
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TPrinter *Prn;
#define LEFT_MARGIN 2
#define TOP_MARGIN 2
float dpiX, dpiY;
float kx, ky;
int p[5];
int x1,y1,x2,y2;
int px, py;
int i, j;
Prn = Printer ();
dpiX = GetDeviceCaps(Prn->Handle,LOGPIXELSX);
dpiY = GetDeviceCaps(Prn->Handle,LOGPIXELSY);
kx = dpiX / Screen->PixelsPerInch;
ky = dpiY / Screen->PixelsPerInch;
px = LEFT_MARGIN / 2.54 * dpiX;
py = TOP_MARGIN / 2.54 * dpiY;
p[0] = px;
for (i = 1; i < 5; i++ )
p[i] = p[i-1] + StringGrid1->ColWidths[i-1]* kx + i;
Prn->BeginDoc();
Prn->Canvas->Font->Name = Label1->Font->Name;
Prn->Canvas->Font->Size = Label1->Font->Size;
Prn->Canvas->TextOut(px,py,Label1->Caption);
py = py + Label1->Font->Size * 2 * ky;
x1 = px;
y1 = py;
Prn->Canvas->Font->Name = StringGrid1->Font->Name;
Prn->Canvas->Font->Size = StringGrid1->Font->Size;
x2 = p[4] + StringGrid1->ColWidths[4]* kx;
y2 = py + StringGrid1->RowCount *
StringGrid1->RowHeights[1] * ky;
for ( j = 0; j < StringGrid1->RowCount; j++)
{
// строкитаблицы
for (i = 0 ; i < StringGrid1->ColCount; i++)
Prn->Canvas->TextOut(p[i],py,
StringGrid1->Cells[i][j]);
// горлиния
Prn->Canvas->MoveTo(p[0],py);
Prn->Canvas->LineTo(x2,py);
}
py = py+ StringGrid1->RowHeights[j]* ky;
// вертикальныелинии
for ( i = 0; i < StringGrid1->ColCount; i++ )
{
Prn->Canvas->MoveTo(p[i],y1);
Prn->Canvas->LineTo(p[i],y2);
}
// праваяграница
Prn->Canvas->MoveTo(x2,y1);
Prn->Canvas->LineTo(x2,y2);
// нижняяграница
Prn->Canvas->MoveTo(x1,y2);
Prn->Canvas->LineTo(x2,y2);
py = y2 + 0.5 / 2.54 * dpiY; // здесь 1 - это 1 см.
Prn->Canvas->TextOut(p[3],py,Label2->Caption);
Prn->EndDoc(); // закрытаяпечать
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float summ;
summ = 0;
for ( int i = 1; i < 11; i++)
{
// если ячейка Сумма пустая, то привыполнении
// функции StrToFloat возникает ошибка (исключение)
try
{
summ += StrToFloat(StringGrid1->Cells[4][i]);
}
catch (Exception &e)
{ }
}
Label2->Caption = "всего: " + FloatToStr(summ) + " руб.";
}
