Изучение механизмов, способов вызова и обработки исключений в среде C++ Builder, страница 6

 Храмцов Павел Васильевич

Ввод значений для работы с объектом класса осуществить: с помощью элемента TComboBox (запоминать старые значения), запуск на вычисление выполняется с помощью кнопок TSpeedButton. В соответствии с введёнными значениями нарисовать на Canvas объект (с изменением внутренних значений объекта, объект должен менять графическое представление (уровень воды, температуру). Параметры объекта вывести с помощью TMemo, записывать время изменения параметра.

 Чудиловский Максим Сергеевич

Ввод значений для работы с объектом класса осуществить: X с помощью элемента TScrollBar, запуск на вычисление выполняется с помощью элемента TBitBtn. В соответствии с введёнными значениями нарисовать на Canvas объекты (с изменением внутренних значений объекта, объект должен менять графическое представление (например цвет уже прочитанных книг). Параметры объекта вывести с помощью TStaticText.

 Листинг программы:

 Файл Unit1.cpp:

//---------------------------------------------------------------------------

#include "errors.hpp"

#include <vcl.h>

#pragma hdrstop

#include "filter_mod.hpp"

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

bool nash = false;

bool oneTimeFilt = false;

//! Частота фотона.

double e;

filter_mod_t FL(3);

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

{

}

//---------------------------------------------------------------------------

int x=0,y=0;

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 x=0;

 //! Активируем компонент Timer.

 Timer1->Enabled=true;

 Timer1->Enabled=false;

}

//---------------------------------------------------------------------------

//! Timer обеспечивает отображение движущегося фотона.

void __fastcall TForm1::Timer1OnTimer(TObject *Sender)

{

 int r=Image1->Tag;

 //! Отфильтрованная энергия.

 double k=FL.print_energy();

 //! Обновляем значение отображаемой отфильтрованной энергии.

 Memo2->Lines->Add(k);

 //! Прорисовываем движущийся фотон с фильтром.

 Image1->Canvas->Brush->Style=1;

 Image1->Canvas->Brush->Color=clWhite;

 Image1->Canvas->Rectangle(0,0,265,177);

 Image1->Canvas->Brush->Color=clRed;

 Image1->Canvas->Ellipse(x-3*r,y-3*r,x+r*3,y+r*3);

 Image1->Canvas->Brush->Style=7;

 Image1->Canvas->Brush->Color=clBlack;

 Image1->Canvas->Rectangle(230,20,265,157);

 if (x>=230)

 {

        if(oneTimeFilt != true)FL.filt(e);

        oneTimeFilt = true;

 }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::MouseDown(TObject *Sender, TMouseButton Button,

      TShiftState Shift, int X, int Y)

{

        x=X;

        y=Y;

        //! Сканируем значение из Memo1.

    //! Проверка на корректность вводимой частоты.

    try{

        e=Memo1->Lines[0][0].ToInt();

        FL.set_frien(e);

    }

    catch(my_exception&g){

        MessageDlgPos(g.get_description().c_str(), mtError, TMsgDlgButtons() << mbOK,300,300,300);

    }

    catch( EConvertError &t ){

        MessageDlgPos("Внимание! Вы ввели не число!", mtError, TMsgDlgButtons() << mbOK,300,300,300);

    };

        Memo2->Lines->Clear();

        if(e<40)Image1->Tag=e;

        else Image1->Tag=40;

        nash = true;

        oneTimeFilt = false;

        //! Активируем компонент Timer.

        Timer1->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::MouseMove(TObject *Sender, TShiftState Shift, int X,

      int Y)

{

        if(nash == true){

        x=X;

        y=Y;

        }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::MouseUp(TObject *Sender, TMouseButton Button,

      TShiftState Shift, int X, int Y)

{

        nash= false;

        Timer1->Enabled=false;

}

//---------------------------------------------------------------------------