- •Введение
- •Основные концепции объектно-ориентированного программирования
- •Принципы ооп
- •Архитектура программы при ооп
- •Объектно-ориентированные языки програм-мирования
- •Описание класса в Object Pascal
- •События и реакция на них
- •Интегрированная среда разработки
- •Интегрированная среда разработки Delphi 7: 1 – главное окно; 2 - окно Дерева объектов; 3 – окно Инспектора объектов; 4 – окно Проводника кода; 5 – окно Конструктора форм; 6 – окно Редактора кода
- •Характеристика проекта Delphi
- •Компиляция и выполнение проекта
- •Знакомство со средой программирования
- •Компонент Lable
- •Компонент Label
- •Инспектор объектов
- •Компонент Edit
- •Компонент Edit
- •Компоненты Button, BitBtn, SpeedButton
- •Примеры кнопок Button, BitBtn и SpeedButton
- •Пример приложения
- •Форма с размещенными на ней компонентами
- •Компоненты для работы с текстом
- •Строковый редактор
- •Пример работы с компонентом Memo
- •Компонент RichEdit
- •Примеры форматирования текста в компоненте RichEdit
- •Списки строк
- •Компонент ListBox
- •Пример работы со списками строк
- •Компонент ComboBox
- •Переключатели
- •Компонент CheckBox
- •Пример работы с независимыми переключателями
- •Компоненты RadioButton и RadioGroup
- •Пример работы с группой зависимых переключателей
- •Объединение элементов управления. Компонент Panel
- •Примеры различного оформления рамки панелей
- •Компоненты OpenDialog и SaveDialog
- •Диалоговое окно открытия файла
- •Редактор фильтра
- •Работа с меню
- •Компонент MainMenu
- •Конструктор меню
- •Компонент PopupMenu
- •Пример контекстного меню
- •Работа с базами данных
- •Средства для работы с базами данных
- •Создание баз данных с помощью Database Desktop
- •Окно выбора формата таблицы
- •Окно определения структуры таблицы
- •Пример структуры таблицы
- •Пример заполненной таблицы
- •Создание псевдонимов бд в bde Administrator
- •Диалоговое окно создания псевдонима бд
- •Главное окно Администратора bde
- •Компоненты для работы с бд
- •Пример приложения
- •Форма с компонентами Table, DataSource и dbGrid
- •Редактор полей таблицы
- •Пример таблицы с измененными свойствами
- •Работа с графикой
- •Пример работы с графикой
- •Лабораторное задание
- •Указания по оформлению отчета
- •Контрольные вопросы
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Компоненты Button, BitBtn, SpeedButton
Кнопки являются управляющими элементами и используются для выдачи команд на выполнение определенных функциональных действий. На поверхности кнопка может содержать текст и/или графический рисунок.
Система Delphi предлагает несколько компонентов, представляющих собой различные варианты кнопок (рис. 6):
стандартная кнопка Button ;
кнопка с рисунком BitBtn ;
кнопка быстрого доступа SpeedButton .
Простейшей и, пожалуй, наиболее часто используемой, является кнопка Button, которая может содержать на своей поверхности надпись, поясняющую назначение и описание действий, выполняемых при ее нажатии. Эта надпись хранится в свойстве Caption.
Основным событием для кнопки является событие OnClick, возникающее при ее нажатии. Именно в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке.
Примеры кнопок Button, BitBtn и SpeedButton
Кнопка BitBtn отличается от Button тем, что может содержать на своей поверхности не только текст, но и изображение (определяется свойством Glyph).
Кнопка SpeedButton по своему виду и функциональным возможностям схожа с кнопкой BitBtn. Она так же, как и кнопка с рисунком, имеет свойства Caption и Glyph, но в отличие от других кнопок, SpeedButton помимо обычного и нажатого состояний имеет третье состояние – выбранное (включенное). Выбрана кнопка или нет, определяет свойство Down. Если свойство имеет значение true, то кнопка выбрана, если false – не выбрана. Как правило, кнопки SpeedButton используются группами. В каждой группе может быть нажата только одна кнопка.
Пример приложения
Создадим с помощью Delphi или C++ Builder простейший калькулятор.
Запустите среду разработки с помощью меню Пуск / Программы. Для создания нового приложения нужно выполнить команду Файл / Новый и в открывшемся каскадном меню выбрать пункт Приложение (Application).
На пустую форму поместите текстовое поле. Для этого выделите пиктограмму Edit на странице Standard Панели компонентов, а затем щелкните курсором мыши в нужном вам месте формы. На форме появилось текстовое поле, которому по умолчанию будет присвоено имя Edit1. Выделите компонент Edit1. На странице Properties Инспектора объектов появятся все свойства данного компонента. Найдите свойство Text и сотрите текст, отображаемый по умолчанию (Edit1).
Таким же образом добавьте на форму кнопки. Примерный вид формы показан на рис. 7.
Форма с размещенными на ней компонентами
Выделите кнопку Button1, измените имя кнопки (Name) на Button0 и свойство Caption на 0. Перейдите в Инспекторе на страницу событий (Events) и найдите событие OnClick. Сделайте двойной щелчок в поле справа от имени этого события. Это стандартный способ задания обработчиков любых событий, но перейти в обработчик события OnClick кнопки можно и иначе: достаточно дважды щелкнуть на компоненте Button0. В обоих случаях вы окажетесь в окне Редактора кода и увидите текст:
procedure TForm1.Button0Click(Sender: TObject);
begin
end;
Заголовок этой процедуры складывается из имени класса вашей формы (TForm1), имени компонента (Button0) и имени события (Click).
При нажатии на кнопку нужно чтобы к тексту Edit1 добавился символ 0. Это можно сделать с помощью следующего кода:
// - - - - Object Pascal - - - -
procedure TForm1.Button0Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + '0';
end;
// - - - - - - - C++ - - - - - - -
void __fastcall TForm1::Button0Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '0';
}
Откомпилируйте свое приложение и убедитесь, что оно работает.
При нажатии на кнопки операций сложения и вычитания нужно выполнить следующие действия:
запомнить в переменную a введенное число;
запомнить операцию; для этой цели добавим целочисленную переменную operation_code, принимающую значение 1, если нажата кнопка «+» и 2, если «-»;
установить признак того, что в Edit1 будет вводиться новое число (логическая переменная new_number).
Все необходимые глобальные переменные надо предварительно описать:
// - - - - Object Pascal - - - -
var
a, b: integer;
operation_code: integer;
new_number: boolean;
// - - - - - - - C++ - - - - - - -
int a, b;
int operation_code;
bool new_number = true;
В обработчике события OnClick кнопки ButtonPlus напишем следующий код:
// - - - - Object Pascal - - - -
procedure TForm1.ButtonPlusClick(Sender: TObject);
begin
a := StrToInt(Edit1.Text);
operation_code := 1;
new_number := true;
end;
// - - - - - - - C++ - - - - - - -
void __fastcall TForm1::ButtonPlusClick(TObject *Sender)
{
a = StrToInt(Edit->Text);
operation_code = 1;
new_number = true;
}
Дополним обработчик события нажатия кнопки «0»:
// - - - - Object Pascal - - - -
procedure TForm1.Button0Click(Sender: TObject);
begin
if new_number then
begin
Edit1.Text := '0';
new_number := false;
end
else Edit1.Text := Edit1.Text + '0';
end;
// - - - - - - - C++ - - - - - - -
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (new_number)
{
Edit->Text = '3';
new_number = false;
}
else Edit->Text = Edit->Text + '3';
}
Кнопки с остальными цифрами будут содержать аналогичный код.
При нажатии кнопки «=» выполняются следующие действия:
из Edit1 считывается второе число;
в зависимости от значения переменной operation_code выполняется операция;
в поле Edit1 выводится ответ;
установить признак ввода нового числа.
Обработчик нажатия кнопки ButtonEqual:
// - - - - Object Pascal - - - -
procedure TForm1.ButtonEqualClick(Sender: TObject);
var
c: integer;
begin
b := StrToInt(Edit1.Text);
case operation_code of
1: c := a + b;
2: c := a - b;
end;
Edit1.Text := IntToStr(c);
new_number := true;
end;
// - - - - - - - C++ - - - - - - -
void __fastcall TForm1::ButtonEqualClick(TObject *Sender)
{
int c = 0;
b = StrToInt(Edit->Text);
switch (operation_code)
{
case 1: c = a + b; break;
case 2: c = a - b; break;
}
Edit->Text = IntToStr(c);
new_number = true;
}
Для очистки поля Edit1 в обработчике нажатия кнопки «С» напишем следующий код:
// - - - - Object Pascal - - - -
procedure TForm1.ButtonClearClick(Sender: TObject);
begin
Edit1.Clear;
end;
// - - - - - - - C++ - - - - - - -
void __fastcall TForm1::ButtonClearClick(TObject *Sender)
{
Edit->Clear();
}
Для того чтобы сохранить приложение, нужно выполнить команду File / Save All.
Лабораторное задание
Написать программу «Калькулятор», выполняющую операции сложения, вычитания, умножения, деления, возведения в квадрат, извлечения корня.
Программа должна обрабатывать все нестандартные ситуации (деление на ноль, извлечение корня из отрицательного числа и т. д.).
Указания по оформлению отчета
Отчет должен содержать:
наименование и цель работы;
краткие теоретические сведения;
задание на лабораторную работу;
результаты выполнения лабораторной работы.
контрольные вопросы
Что такое ООП? Какие принципы лежат в его основе?
Что такое класс? Из каких разделов состоит описание класса?
Из каких файлов состоит проект Delphi (C++ Builder)?
Какие свойства и события имеют компоненты Label, Edit, Button?