- •Компоненты
- •Событие и функция обработки события
- •Редактор кода
- •Система подсказок
- •Навигатор классов
- •Шаблоны кода
- •Справочная система
- •Сохранение проекта
- •Компиляция
- •Предупреждения и подсказки
- •Компоновка
- •Запуск программы
- •Ошибки времени выполнения
- •Внесение изменений
- •Настройка приложения
- •Название программы
- •Значок приложения
- •Перенос приложения на другой компьютер
- •Структура простого проекта
- •2. Задание на выполнение работы
- •1. Электроэнергия.
- •2. Игра «угадай число».
- •3. Гороскоп
- •4. Межгород
- •6. Алфавит
- •7. Палиндром
- •8. Метеослужба
- •9. Статистика
- •10. Кафе.
- •Лабораторная работа №22 Графика.
- •Карандаш и кисть
- •Графические примитивы
- •Ломаная линия
- •Прямоугольник
- •Многоугольник
- •Окружность и эллипс
- •Лабораторная работа №23 Иллюстрации
- •Битовые образы
- •Мультипликация
- •Метод базовой точки
- •Использование битовых образов
- •Загрузка битового образа из ресурса программы
- •Создание файла ресурсов
- •Подключение файла ресурсов
- •Int w, h; // размер кадра
- •Int с; // номер воспроизводимого кадра
- •Лабораторная работа №25
- •1. База данных и субд
- •Локальные и удаленные базы данных
- •Структура базы данных
- •Псевдоним
- •Компоненты доступа и манипулирования данными
- •Создание базы данных
- •Доступ к базе данных Доступ к базе данных обеспечивают компоненты Database, Table, Query и DataSource. Значки этих компонентов находятся на вкладках Data Access и bde (рис. 25.8).
- •Отображение данных
- •Манипулирование данными
- •Выбор информации из базы данных
- •Перенос программы управления базой данных на другой компьютер
- •2. Задание на выполнение работы
- •Литература
Внесение изменений
После нескольких запусков программы "Сила тока" возникает желание усовершенствовать программу, внести в нее изменения. Например, такие, чтобы после ввода напряжения в результате нажатия клавиши <Enter> курсор переходил в поле Сопротивление, а после ввода сопротивления в результате нажатия этой же клавиши выполнялся расчет. Кроме того, было бы неплохо, чтобы пользователь мог вводить в поля редактирования только числа. Чтобы внести изменения в программу, нужно запустить C++ Builder и открыть соответствующий проект. Сделать это можно обычным способом, выбрав в меню File команду Open Project. Можно также воспользоваться командой Reopen из меню File. При выборе команды Reopen открывается список проектов, над которыми работал программист в последнее время. В листинге 20.4 приведена программа "Сила тока", в которую внесены изменения: добавлены функции обработки событий onKeyPress для компонентов Edit1 и Edit2. Чтобы добавить в программу функцию обработки события, надо в окне Object Inspector выбрать компонент, для которого нужно создать функцию обработки события, на вкладке Events выбрать событие и сделать двойной щелчок в поле рядом с именем события. C++ Builder сформирует шаблон функции обработки события. После этого можно вводить инструкции, реализующие функцию.
Листинг 20.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(); // закрыть форму приложения
}