Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет мой.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.46 Mб
Скачать

Задание 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;