|
|||
void fastcall TForml::EditChange(TObject *Sender)return; // остальные клавиши запрещены Key = 0 ; // не отображать символ // Содержимое поля Editl изменилось void fastcallTForml::EditlChange(TObject *Sender) { // проверим, есть ли в поле Editl исходные данные if( (Editl->Text).Length() == 0) Buttonl->Enabled = False;// кн. Пересчет недоступна elseButtonl->Enabled = True;// кн. Пересчет доступна Label2->Caption = ""; // щелчок на кнопке Пересчет void fastcallTForml::ButtonlClick(TObject *Sender) { doublefunt; // вес в фунтах doublekg; // вес в килограммах // кнопка Пересчет доступна только в том случае, // если в поле Editl есть данные. Поэтому, // наличие в поле информации можно не проверять. funt = StrToFloat(Editl->Text); kg = funt * 0.4995; Label2->Caption = FloatToStrF(funt,ffGeneral,5,2) + " ф. - это " + FloatToStrF(kg,ffGeneral,5,2) + " кг"; }
Пример выполнения:
Задача №3 Сила тока: Блок-схема: Текст программы: / / щелчок на кнопке Вычислить void fastcallTForml::ButtonlClick(TObject *Sender) floatu; // напряжение floatr; // сопротивление float i; //ток // проверим, введены ли данные в поля Напряжение и // Сопротивление if( ((Editl->Text).Length() ==0) || ((Edit2->Text).Length() == 0)) { MessageDlg("Надо ввести напряжение и сопротивление", mtlnformation, TMsgDlgButtons() << mbOK, 0) ; if ((Editl->Text).Length() == 0) Editl->SetFocus(); // курсор в поле Напряжение else Edit2->SetFocusО; // курсор в поле Сопротивление return; // получить данные из полей ввода u = StrToFloat(Editl->Text); г = StrToFloat(Edit2->Text); // вычислить ток try { i = u/r; } catch(EZeroDivide &e) { ShowMessage("Величина сопротивления не должна быть" "равна нулю"); Edit2->SetFocus(); // курсор в поле Сопротивление return; // вывести результат в поле Labels Label4->Caption - "Ток : " + FloatToStrF(i,ffGeneral,7,2) + " A"; // нажатие клавиши в поле Напряжение // коды запрещенных клавиш заменим нулем, в результате // символы этих клавиш в поле редактирования не появятся void fastcallTForml::EditlKeyPress(TObject *Sender, char&Key) { // 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 fastcallTForml::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_RETURN) // клавиша <Enter> I Buttonl->SetFocus(); // переход к кнопке Вычислить // повторное нажатие клавиши <Enter> // активизирует процесс вычисления тока // см. ButtonlClick return; // остальные клавиши запрещены Key= 0 ; // не отображать символ У // щелчок на кнопке Завершить void fastcallTForml::Button2Click(TObject 'Sender) Forml->Close(); // закрыть форму приложения /* Процедура EditlChange обрабатывает событие Change как поля Editl, так и поля Edit2. Сначала-надо создать процедуру обработки события Change для поля Editl, затем - в строке события Change компонента Edit2 щелкнуть на значке раскрывающегося списка и выбрать EditlChange. */ void fastcall TForml::EditChange(TObject *Sender) {
|
|||
|