ІV-й спосіб

1. Відкрийте програмний проект для попереднього варіанту. Командами File/Save as та File/Save Project as запишіть файли Unit1.cpp та Project1.bpr у папку для ІV-го варіанту програми.

2. Компоненти Label4, RadioGroup1 та ListBox2 вилучіть, а замість них розташуйте таблицю рядків StringGrid (сторінка Additional палітри компонент) з такими значеннями для властивостей:

ColCount — 3 (к-сть стовпців)

RowCount — 4 (к-сть рядків)

FixedCols — 0 (к-сть фіксованих стовпців зліва)

FixedRows — 1 (к-сть фіксованих рядків зверху)

Форма виглядатиме таким чином:

3. Заповнимо таблицю даними (назви валют, курс продажу та купівлі) під час запуску програми скориставшись подією OnCreate для форми:

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

int I;

StringGrid1->Cells[0][0]="Назви валют";

StringGrid1->Cells[1][0]="Купівля";

StringGrid1->Cells[2][0]="Продаж";

for (I=1; I<=K; I++)

{

StringGrid1->Cells[0][I]=Nv[I-1];

StringGrid1->Cells[1][I]=FloatToStr(Kv[I-1][0]);

StringGrid1->Cells[2][I]=FloatToStr(Kv[I-1][1]);

}

}

Значення комірок таблиці StringGrid1 зберігаються у властивості Cells, яка є двомірним масивом, нумерація рядків та стовпців у ньому розпочинається з нуля (спочатку вказується номер стовпця, а потім номер рядка). Масиви Nv та Kv (назви валют та курси валют) опишемо у розділі implementation таким чином:

const K=3;

char *Nv[K]={"USD", "Euro", "RusRuble"};

const double Kv[K][2]={5.05,5.15,6.1,6.2,0.15,0.16};

4. Методи для опрацювання події OnClick для RadioButton1 та RadioButton2 залишимо у такому вигляді:

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

Label3->Caption="купуєте";

Label7->Caption="до оплати";

 

}

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

 

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

Label3->Caption="продаєте";

Label7->Caption="до видачі";

}

5. Опрацювання події OnClick для Edit2 здійснимо таким чином:

void __fastcall TForm1::Edit2Change(TObject *Sender)

{

if (RadioButton1->Checked)

Edit3->Text=FloatToStr(StrToInt(Edit2->Text)*

Kv[StringGrid1->Row-1][0]);

else

Edit3->Text=FloatToStr(StrToInt(Edit2->Text)*

Kv[StringGrid1->Row-1][1]);

}

Властивість Row компонента StringGrid1 фіксує номер вибраного рядка таблиці.

6. Виконайте програму із середовища C++ Builder. Форма програми на етапі виконання виглядатиме таким чином:

Завантажте відповідний exe-файл із середовища ОС Widows.

 

Завдання для самостійної роботи

У всіх варіантах програми при вилученні числового значення із поля Edit2 або при введенні в нього недопустимого символу буде з’являтися помилка ‘is not a valid integer value’. З’ясуйте, в чому причина такої помилки та виправте її.