Задание 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(); // закрыть форму приложения }