Задание 1
В форму добавить четыре компонента Label. Поле Label1 предназначено для вывода информационного сообщения, поля Label2 и Labels – для вывода информации о назначении полей ввода, поле Label4 – для вывода результата расчета (величины тока в цепи). После добавления компонентов надо выполнить их настройку – установить значения свойств (табл.1). В результате форма разрабатываемого приложения должна выглядеть так, как показано на рисунке 1.
Таблица 1. Значения свойств компонентов Label1 – Label4
Свойство | Компонент | |||
Label1 | Label2 | Label3 | Label4 | |
AutoSize | false | true | true | fablse |
Wordwrap | true | false | false | true |
Caption | Введите напряжение и величину сопротивления, затем щелкните на кнопке Вычислить | Напряжение (вольт) | Сопротивление (Ом) | |
Top | ||||
Left | ||||
Height | ||||
Width |
Рис. 1 Форма приложения «Сила тока»
Добавить в форму две командные кнопки: Вычислить и Завершить. Командная кнопка – компонент Button – добавляется в форму точно так же, как и другие компоненты. Значок компонента Button находится на вкладке Standard. После добавления к форме двух командных кнопок нужно установить значения их свойств в соответствии с табл. 2.
Таблица 2. Значения свойств компонентов Button1 и Button2.
Свойство | Компонент | |
Button1 | Button2 | |
Caption | Вычислить | Завершить |
Top | ||
Left | ||
Height | ||
// щелчок на кнопке Вычислить
void__fastcall TForml::ButtonlClick(TObject *Sender)
{
float u; // напряжение
float r; // сопротивление
float i; // ток
// проверим, введены ли данные в поля Напряжение и Сопротивление
if (((Editl-XText).Length() == 0) || ((Edit2 › Text).Length() ==0))
{
MessageDlg("Haдo ввести напряжение и сопротивление",
mtInformation, TMsgDlgButtons() << 0);
if ((Editl->Text).Length() == 0) // ничего не введено
Edit1->SetFocus(); // курсор в поле Напряжение
else
Edit2->SetFocus(); // курсор в поле Сопротивление return; };
// получить данные из полей ввода
u = StrToFloat(Editl->Text);
r = StrToFloat(Edit2->Text);
// вычислить силу тока
try
{
i = u/r;
}
catch (EZeroDivide &e)
{
ShowMessage("Величина сопротивления не должна быть равна нулю");
Edit2->SetFocus(); // курсор в поле Сопротивление
return;
}
// вывести результат в поле Label4
Label4->Caption = "Ток: " + FloatToStrF(i,ffGeneral,7.2) + " А";
}
// нажатие клавиши в поле Напряжение
void __fastcall TForml::EditlKeyPress(TObject *Sender, char SKey)
{
// коды запрещенных клавиш заменим нулем, в результате
// символы этих клавиш в поле редактирования не появятся
// Key – код нажатой клавиши
// проверим, является ли символ допустимым
if ((Key >= '0') && (Key <= '9'})
// цифра
return;
// Глобальная переменная DecimalSeparator // содержит символ, используемый в качестве разделителя // при записи дробных чисел
if (Key == DecimalSeparator)
{
if ((Editl->Text).Pos(DecimalSeparator)!= 0)
Key =0; // разделитель уже введен
return;
}
if (Key == VK_BACK) // клавиша <Backspace>
return;
if (Key == VK_RETURN) // клавиша Enter
{
Edit2->SetFocus();
return;
};
// остальные клавиши запрещены Key=0; не отображать символ
}
// нажатие клавиши в поле Сопротивление
void__fastcall TForml::Edit2KeyDown(TObject *Sender, WORD &Key,
TSHIFTState SHIFT)
{
if ((Key >= '0') && (Key <= '9')) // цифра
return;
if (Key == DecimalSeparator)
{
if ((Edit2->Text).Pos(DecimalSeparator)!= 0)
Key =0; // разделитель уже введен return;
}
if (Key == VK_BACK) // клавиша <Backspace>
return;
if (Key == VK_RETORN) // клавиша Enter
(
Buttonl->SetFocus(); // переход к кнопке Вычислить
// повторное нажатие клавиши Enter
// активизирует процесс вычисления тока
return;
};
// остальные клавиши запрещены Key = 0; не отображать символ
}
// щелчок на кнопке Завершить
void __fastcall TForml::Button2Click(TObject *Sender)
{
Forml->Close(); // закрыть форму приложения }