Внесение изменений

После нескольких запусков программы "Сила тока" возникает желание усовершенствовать программу, внести в нее изменения. Например, такие, чтобы после ввода напряжения в результате нажатия клавиши <Enter> курсор переходил в поле Сопротивление, а после ввода сопротивления в результате нажатия этой же клавиши выполнялся расчет. Кроме того, было бы неплохо, чтобы пользователь мог вводить в поля редактирования только числа. Чтобы внести изменения в программу, нужно запустить C++ Builder и открыть соответствующий проект. Сделать это можно обычным способом, выбрав в меню File команду Open Project. Можно также воспользоваться командой Reopen из меню File. При выборе команды Reopen открывается список проектов, над которыми работал программист в последнее время. В листинге 4 приведена программа "Сила тока", в которую внесены изменения: добавлены функции обработки событий onKeyPress для компонентов Edit1 и Edit2. Чтобы добавить в программу функцию обработки события, надо в окне Object Inspector выбрать компонент, для которого нужно создать функцию обработки события, на вкладке Events выбрать событие и сделать двойной щелчок в поле рядом с именем события. C++ Builder сформирует шаблон функции обработки события. После этого можно вводить инструкции, реализующие функцию.

 

Листинг 4. Функции обработки событий на компонентах формы программы "Сила тока"

// щелчок на кнопке Вычислить void__fastcall TForm1::ButtonlClick(TObject *Sender) { float u; // напряжение float r; // сопротивление float i; // ток // проверим, введены ли данные в поля Напряжение и Сопротивление if (((Edit1-XText).Length()==0)||((Edit2->Text).Length()==0)) { MessageDlg("Haдo ввести напряжение и сопротивление", mtlnformation, 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) + " А"; } // нажатие клавиши в поле Напряжение void __fastcall TForm1::EditlKeyPress(TObject *Sender, char SKey) { /* коды запрещенных клавиш заменим нулем, в результате символы этих клавиш в поле редактирования не появятся Key — код нажатой клавиши проверим, является ли символ допустимым */if ((Key>='0')&&(Key<='9'}) // цифра return; /* Глобальная переменная DecimalSeparator содержит символ, используемый в качестве разделителя при записи дробных чисел */if ( Key == DecimalSeparator) { if ((Edit1->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 TForm1::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> ( Button1->SetFocus();//переход к кнопке Вычислить // повторное нажатие клавиши <Enter> // активизирует процесс вычисления тока return; }; // остальные клавиши запрещены Key = 0; //не отображать символ } // щелчок на кнопке Завершить void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->Close(); // закрыть форму приложения }

 








Дата добавления: 2015-07-30; просмотров: 659;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.