Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Инф и Инф технол / ЛЕКЦИЯ 10 Инф ЖД 2 сем

.doc
Скачиваний:
42
Добавлен:
10.04.2015
Размер:
1.17 Mб
Скачать

4

1 курс (ЭЖД)

ЛЕКЦИЯ 10

СОБЫТИЯ И ОБРАБОТКА СОБЫТИЙ В DELPHI-ПРИЛОЖЕНИЯХ

2 семестр

10.1. События и обработка событий

Создание и реализация Delphi-приложений основываются на понятии события. Формально событие представляет собой спецификацию некоторого факта, имеющего место в пространстве и во времени. Про события говорят, что они "происходят", при этом отдельные события будут упорядочены во времени. После наступления некоторого события нельзя уже вернуться к предыдущим событиям, если такая возможность явно не предусмотрена в модели.

Одна из особенностей объектно-ориентированного программирования состоит в том, что с каждым объектом (элементом диалогового окна) связывается определенное событие, характерное для этого объекта. Большая часть кода, записываемая в Delphi, будет инициироваться событиями. В принципе событием может быть изменение любой величины. Происхождение события заставляют работать определенный объект, при этом объект получает заранее определенные параметры для своей настройки на работу. Например, компонент Button (кнопка) может быть только нажат (или, как говорят, "кликнут"). Событие в данном случае заключается в нажатии (щелчке) мышью кнопки Button. Это событие должно вызвать определенные действия, которые программируются в соответствии с разработанным "сценарием". Действия эти (даже если это всего лишь одно действие) объединяются в специальную процедуру-обработчик события.

Чтобы начать программировать процедуру-обработчик события, например, связанного с кнопкой Button1, нужно, как уже было раньше сказано, выполнить двойной щелчок по объекту Button1.

В тексте модуля при этом автоматически появится следующий текст:

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

Размещая внутри этой процедуры необходимые операторы, получим требуемую процедуру-обработчик события, связанного с кнопкой Button1.

Аналогично, выполняя двойной щелчок по объекту ScrollBar1, получим "заготовку" ("шаблон") для следующей процедуры:

Procedure TForm1.ScrollBar1Change(Sender:TObject);

Begin

end;

Размещая внутри этой процедуры необходимые операторы, получим требуемую процедуру-обработчик события, связанного с перемещением бегунка на полосе прокрутки ScrollBar1.

С такими объектами, как, например, Edit и RadioButton обычно непосредственно не связывают каких-либо обработчиков, поскольку действия, связанные с ними, как правило, можно выполнять путем нажатия кнопок или перемещения бегунка, то есть в процедурах-обработчиках событий, связанных с такими объектами, как Button, ScrollBar и рядом других.

Почти все рассмотренные выше объекты имеют свойство Visible (видимый). По умолчанию его значение равно True, которое может быть изменено на False, после чего объект становится невидимым. Имеется также свойство Enabled (доступный), значение которого по умолчанию равно True. Если его значение равно False, то компонент становится недоступным для работы с ним.

Компоненты Timer, OpenDialog, SaveDialog являются невидимыми (их не будет видно после запуска приложения) и поэтому не обладают таким свойством, как Visible (оно им ни к чему), остальные рассмотренные выше компоненты – видимые.

10.2. Пример разработки Delphi-приложения

Составить Delphi-приложение на языке Object Pascal для выполнения четырех арифметических действий над вещественными числами.

Указания.

Использовать следующие компоненты:

– текстовые поля Edit1 и Edit2 – для ввода исходных числовых данных;

– метки Label1, Label2, Label3 и Label4 – для записи обозначений названия приложения и размещения надписей перед ячейками;

– метку Label5 – для вывода результата;

– переключатели RadioButton1, RadioButton2, RadioButton3 и RadioButton4 – для выбора необходимой операции, объединенные в RadioGroup1;

– кнопку Button1 – для выполнения основных действий.

Решение.

Возможный вид формы приложения представлен на рис. 10.1.

Рис. 10.1. Предлагаемый вид формы приложения

Текст программы (содержимое файла модуля приложения):

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

RadioGroup1: TRadioGroup;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

a,b:Real;

begin

a:=StrToFloat(Edit1.Text);b:=StrToFloat(Edit2.Text);

if RadioButton1.Checked then Label5.Caption:=FloatToStr(a+b);

if RadioButton2.Checked then Label5.Caption:=FloatToStr(a-b);

if RadioButton3.Checked then Label5.Caption:=FloatToStr(a*b);

if RadioButton4.Checked then Label5.Caption:=FloatToStr(a/b)

end;

end.

Данная программа работает следующим образом. После нажатия [F9] в поля Edit1 и Edit2 вводятся числа (если дробные – то разделителем должна быть запятая) и выбирается одна из арифметических операций. Далее нажимается кнопка. Не закрывая программу, можно ввести другие данные и (или) выбрать другую операцию.