C++ Builder - вопросы программирования

       

Функции обработки событий на компонентах



Листинг 2.4.

Функции обработки событий на компонентах формы программы "Сила тока"
// щелчок на кнопке Вычислить void__fastcall TForml::ButtonlClick(TObject *Sender) { float u; // напряжение float r; // сопротивление float i; // ток // проверим, введены ли данные в поля Напряжение и Сопротивление if ( ((Editl-XText).Length() == 0) || ((Edit2->
Text).Length() ==0)) { MessageDlg("Haдo ввести напряжение и сопротивление", mtlnformation, TMsgDlgButtons() 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-XText).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();
// закрыть форму приложения }
 


Содержание раздела