Сила струму

Програма Сила струму демонструє використання компонентів TextBox і Label, а також обробку винятків “ділення на нуль”.


Код програми

// клацання на кнопку Розрахувати
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float u; // напруга
float r; // опір
float i; // струм
// перевіремо, чи введені данні в поля Напруга та Опір
if ((Edit1->Text).Length()==0 || (Edit2->Text).Length()==0)
{
MessageDlg("Спочатку введіть напругу та опір", mtInformation, TMsgDlgButtons() << mbOK, 0);
if ((Edit1->Text).Length()==0)
Edit1->SetFocus(); // курсор в поле Напруга
else
Edit2->SetFocus(); // курсор в поле Опір
return;
};
// отримати дані з полів введення
u = StrToFloat (Edit1->Text);
r = StrToFloat (Edit2->Text);
// обчислити струм
try
{
i = u/r;
}
catch (EZeroDivide &e)
{
ShowMessage("Величина опору не може дорівнювати нулю");
Edit2->SetFocus(); // курсор в поле Опір
return;
}
// вивести результат в поле Label4
Label4->Caption = "Струм : " + FloatToStrF(i, ffGeneral, 7, 2) + "A";
}
// натиснення клавіш в поле Напруга
// код забороненого символа замінемо нулем, в результаті
// символ в полі редагування не появиться
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
// Key — код натиснення клавіш
// перевіремо, чи є символ доступним
if (Key >= '0' && Key <= '9') // цифра
return;
// глобальна змінна DecimalSeparator
// містить символ, використовуваний в якості роздільника
// при записі дробових чисел
if (Key == DecimalSeparator)
{
if ((Edit1->Text).Pos(DecimalSeparator) != 0)
Key = 0; // роздільник вже введений
return;
}
if (Key == VK_RETURN) // клавіша Backspace
return;

if (Key == VK_RETURN) // клавіша Enter
{
Edit2->SetFocus();
return;
}

// інші клавіши заборонені
Key = 0;
}

// натиснення клавіш в поле Опір
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if (Key >= '0' && Key <= '9') // цифра
return;

if (Key == DecimalSeparator)
{
if ((Edit2->Text).Pos(DecimalSeparator) != 0)
Key = 0; // роздільник вже введений
return;
}

if (Key == VK_RETURN) // клавіша Backspace
return;

if (Key == VK_RETURN) // клавіша Enter
{
Button1->SetFocus(); // перехід на кнопку Перерахунок
// наступне натискання клавіши Enter
// активує процез розрахування струму
return;
}

// інші клавіши заборонені
Key = 0;
}
// клацання на кнопку Завершити
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close(); // закрити форму додатку
}

/* Процедура Edit1Change обробляє подію Change як поле Edit1, так і поле Edit2.
Спочатку необхідно створити процедуру обробки події Change для поля Edit1, потім — в рядку події Change компонента
Edit2 клацнути на значку випадаючокго списку і вибрати Edit1Change. */
void __fastcall TForm1::EditChange(TObject *Sender)
{
Label4->Caption = “”;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *