Четверг, 31.07.2025, 18:03 Приветствую Вас Гость

On-line: Книги, учебники, статьи

Главная | Регистрация | Вход | RSS

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

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



После нескольких запусков программы "Сила тока" возникает желание усовершенствовать программу, внести в нее изменения. Например, такие, чтобы после ввода напряжения в результате нажатия клавиши <Enter> курсор переходил в поле Сопротивление, а после ввода сопротивления в результате нажатия этой же клавиши выполнялся расчет. Кроме того, было бы неплохо, чтобы пользователь мог вводить в поля редактирования только числа. Чтобы внести изменения в программу, нужно запустить
C++ Builder и открыть соответствующий проект. Сделать это можно обычным способом, выбрав в меню File команду Open Project. Можно также воспользоваться командой Reopen из меню File. При выборе команды Reopen открывается список проектов, над которыми работал программист в последнее время. В листинге 2.4 приведена программа "Сила тока", в которую внесены изменения: добавлены функции обработки событий onKeyPress для компонентов Edit1 и Edit2. Чтобы добавить в программу функцию обработки события, надо в окне Object Inspector выбрать компонент, для которого нужно создать функцию обработки события, на вкладке Events выбрать событие и сделать двойной щелчок в поле рядом с именем события. 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() << mbOK, 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-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(); // закрыть форму приложения } 
Вход на сайт
Поиск
Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Наш опрос
Как Вам удобнее??
Всего ответов: 341
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0