Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технологии разработки приложений в средах Delphi и C++ Builder. Минаева Ю.В.doc
Скачиваний:
17
Добавлен:
01.05.2022
Размер:
827.9 Кб
Скачать
    1. Компоненты Button, BitBtn, SpeedButton

Кнопки являются управляющими элементами и используются для выдачи команд на выполнение определенных функциональных действий. На поверхности кнопка может содержать текст и/или графический рисунок.

Система Delphi предлагает несколько компонентов, представляющих собой различные варианты кнопок (рис. 6):

  • стандартная кнопка Button ;

  • кнопка с рисунком BitBtn ;

  • кнопка быстрого доступа SpeedButton .

Простейшей и, пожалуй, наиболее часто используемой, является кнопка Button, которая может содержать на своей поверхности надпись, поясняющую назначение и описание действий, выполняемых при ее нажатии. Эта надпись хранится в свойстве Caption.

Основным событием для кнопки является событие OnClick, возникающее при ее нажатии. Именно в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке.

  1. Примеры кнопок Button, BitBtn и SpeedButton

Кнопка BitBtn отличается от Button тем, что может содержать на своей поверхности не только текст, но и изображение (определяется свойством Glyph).

Кнопка SpeedButton по своему виду и функциональным возможностям схожа с кнопкой BitBtn. Она так же, как и кнопка с рисунком, имеет свойства Caption и Glyph, но в отличие от других кнопок, SpeedButton помимо обычного и нажатого состояний имеет третье состояние – выбранное (включенное). Выбрана кнопка или нет, определяет свойство Down. Если свойство имеет значение true, то кнопка выбрана, если false – не выбрана. Как правило, кнопки SpeedButton используются группами. В каждой группе может быть нажата только одна кнопка.

    1. Пример приложения

Создадим с помощью Delphi или C++ Builder простейший калькулятор.

Запустите среду разработки с помощью меню Пуск / Программы. Для создания нового приложения нужно выполнить команду Файл / Новый и в открывшемся каскадном меню выбрать пункт Приложение (Application).

На пустую форму поместите текстовое поле. Для этого выделите пиктограмму Edit на странице Standard Панели компонентов, а затем щелкните курсором мыши в нужном вам месте формы. На форме появилось текстовое поле, которому по умолчанию будет присвоено имя Edit1. Выделите компонент Edit1. На странице Properties Инспектора объектов появятся все свойства данного компонента. Найдите свойство Text и сотрите текст, отображаемый по умолчанию (Edit1).

Таким же образом добавьте на форму кнопки. Примерный вид формы показан на рис. 7.

  1. Форма с размещенными на ней компонентами

Выделите кнопку 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.

  1. Лабораторное задание

Написать программу «Калькулятор», выполняющую операции сложения, вычитания, умножения, деления, возведения в квадрат, извлечения корня.

Программа должна обрабатывать все нестандартные ситуации (деление на ноль, извлечение корня из отрицательного числа и т. д.).

  1. Указания по оформлению отчета

Отчет должен содержать:

  • наименование и цель работы;

  • краткие теоретические сведения;

  • задание на лабораторную работу;

  • результаты выполнения лабораторной работы.

  1. контрольные вопросы

  1. Что такое ООП? Какие принципы лежат в его основе?

  2. Что такое класс? Из каких разделов состоит описание класса?

  3. Из каких файлов состоит проект Delphi (C++ Builder)?

  4. Какие свойства и события имеют компоненты Label, Edit, Button?