І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’. З’ясуйте, в чому причина такої помилки та виправте її.