Вы находитесь на странице: 1из 26

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ДНР

ГОУ ВПО «ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ»

Кафедра прикладной математики и ТСУ

ОТЧЕТ

по вычислительной практике

Выполнил:
студент группы 1-«З»
Яковишена Е.А.
Зачетная книжка №
01200106

Преподаватель:
Е.В. Шевцова

Донецк – 2021
Практическая работа №1. Веселый калькулятор

1.Открываем новый проект.

2. Размещаем на форме экземпляры компонентов в соответствии с рисунком:

3. Выполняем следующие действия:

//Кнопка сложения
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
a:=StrToInt(Edit1.text);
b:=StrToInt(edit2.text);
c:=a+b;
Label4.Caption:=FloatToStr(c);
Timer1.Enabled:=true;
end;
//Кнопка вычетания
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
a:=StrToInt(Edit1.text);
b:=StrToInt(edit2.text);
c:=a-b;
Label4.Caption:=FloatToStr(c);
Timer1.Enabled:=true;
end;
//Кнопка умножения
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
a:=StrToInt(Edit1.text);
b:=StrToInt(edit2.text);
c:=a*b;
Label4.Caption:=FloatToStr(c);
Timer1.Enabled:=true;
end;
//Кнопка деления
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
a:=StrToInt(Edit1.text);
b:=StrToInt(edit2.text);
c:=a/b;
Label4.Caption:=FloatToStr(c);
Timer1.Enabled:=true;
end;
//Анимация закрытие глаз у Тамагочи
procedure TForm1.Timer1Timer(Sender: TObject);
begin
shape8.Height:=20;
timer1.Enabled:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
shape7.Height:=45;
shape8.Height:= 45;
timer1.Enabled:=true;
end;
//Кнопка закрытия программы
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

end.
Практическая работа №2. Сказка про Ивана царевича

1.Открываем новый проект.

2. Размещаем на форме экземпляры компонентов в соответствии с рисунком:

3. Выполняем следующие действия:

//Первый выбор
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Label1.Show;// Видимый объект
Label2.Hide; //Невидимый объект
label3.hide; //Невидимый объект
label4.hide; //Невидимый объект
end;
//Второй выбор
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Label1.Hide; //Невидимый объект
Label2.Show; //Видимый объект
label3.hide; //Невидимый объект
label4.hide; //Невидимый объект
end;
//Третий выбор
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Label1.Hide; //Невидимый объект
Label2.Hide; //Невидимый объект
label3.Show; //Видимый объект
label4.hide; //Невидимый объект
end;
//Дополнительный выбор
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Hide; //Невидимый объект
Label2.Hide; //Невидимый объект
label3.hide; //Невидимый объект
label4.Show; //Видимый объект
end;
//Кнопка закрытия программы
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

end.
Практическая работа № 3. Создание графического редактора в среде
Delphi

1. Запускаем Delphi.

2. Создаем рабочую область. Размещаем в форме компонент Image1

3. Events для Image1:

1) OnMouseDown
Var r:Boolean;
T:Tcolor;
Procedure Tform1.Image1MouseDown;
Begin
Image1.Cavas.MoveTo(x,y);
R:=True;
End;

2) OnMouseMove
Begin
If r then Image1.Canvas.LineTo(x,y);

3) OnMouseUp
Begin
R:=True;
4. Настраиваем палитру с помощью компонента ScrollBar и стандартной
функции RGB, позволяющей синтезировать код цвета по кодам базовых
цветов: Устанавливаем событие для компонента ScrollBar1:

procedure TForm1.ScrollBar1Change(Sender: TObject);


begin
Image1.Canvas.Pen.Color:=t;
Shape1.Brush.Color:=t;
t:=RGB(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
end;

Аналогично устанавливаем события для компонентов ScrollBar2 и ScrollBar3.

5. Для отображения палитры используем компонент Shape:

procedure TForm1.Shape1ContextPopup(Sender: TObject; MousePos: TPoint;


var Handled: Boolean);
begin
Shape1.Brush.Color;
end;

6. Для очистки изображения используем процедуру

procedure TForm1.Button3Click(Sender: TObject);


begin
Image1.Canvas.FillRect(ClientRect);
end;

7. Чтобы сохранить рисунок воспользуемся двумя компонентами Button1


иSaveDialog1

procedure TForm1.Button1Click(Sender: TObject);


begin
if SaveDialog1.Execute then
Image1.Picture.SaveToFile(SaveDialog1.FileName);
end;
Практическая работа 4. Создание текстового редактора в среде Delphi

1. Открываем Delphi.

На вкладке Project окна New Item «кликаем» на Application Wizard.Открывается


мастер приложений. Первое окно предлогает указать, какие меню нам нужны.
Пометим галочкой File menu и Edit menu, затем кликнем Next. Следующее окно
предлогает выбрать расширения файлов, с которыми будет работать наша
программа. Кликаем на Add. В поле Desction введем «Текстовый документ», а в
поле Extension «txt» и на Ok, а потом Next. В следующем окне у нас
интересуются, какие стандартные кнопки мы хотите добавить на панель
инструментов будущего приложения. Добавим на панель инструментов все
доступные кнопки из меню File и Edit. Перед тем как добавлять кнопки из меню
Edit один раз нажмем кнопку Space. Так мы поставите между группами кнопок
File и Edit разделительную черту. В следующем окне введем на английском
языке название программы. С помощью кнопки Browse определяем для своего
проекта место на жестком диске и пометим галочками пункты Creat a status line
и Enable hints. Нажмем на Finish и Delphi создает новый проект.

2. Переведем весь каркас на русский язык

Сперва по очереди выделяем каждую кнопку на панели инструментов нашего


редактора, и в ОИ на первой вкладке находим свойство Hint. Это свойство как
раз отвечает за всплывающую подсказку к кнопке. Переведем на русский язык
значение этого свойства.

3. После того как мы русифицировали кнопки, пора приниматься за пункты


меню. Напрямую работать с ними не получится. Дважды щелкнем по кнопке
Main menu, которая находится между панелью инструментов и статусной
линией заготовки. Она символизирует меню программы. После запуска
программы эта «кнопка» просто не видна. Откроется редактор меню. Здесь
надо перевести не только подсказки, но и сами названия пунктов меню.

Для полной русификации даем русское название нашему редактору.

4. Основой текстового редактора является поле, куда пользователь введет текст.


На палитре Delphi есть компонент, который отвечает за подобное поле ввода,
-RichEdit. Найдем этот компонент, кликаем на него, а потом кликаем на
свободном месте на форме. Невзрачная кнопочка разворачивается в целое поле
ввода. Отформатируем поле. Выделяем RichEdit и в ОИ установим свойство
Alignв alClient. Поле ввода заняло всю свободную площадь на форме. Откроем
свойство Line и удалим все содержимое поля. Запускаем программу.

5. Опишем функцию сохранения и загрузки текстовых файлов. На форме видим


невизуальные компоненты OpenDialog и SaveDialog. Опишем процедуры для
кнопок и пунктов меню, которые будут процедуры сохранения и загрузки
файлов. Дважды щелкаем по кнопке сохранения документа нашей заготовки.
Открывается новый обработчик события
//Кнопка сохранения документа
Begin
RichEdit1.Lines.SaveToFile(SaveDialog.FileName);
End;
//Процедура для кнопки «Открыть»:
Begin
RichEdit1.Lines.LoadFromFile(OpenDialog.FileName);
End;
//Кнопка «Новый документ»:
Begin
RichEdit1.Clear;
End;
//Кнопка «настройка печати»
Begin
RichEdit1.Print(‘текстового редактора «Супер»’);//Отправит на печать все
содержимое
End;
//Кнопка «Отмена»:
Begin
With RichEdit1 do if HandleAllocated then SendMessage(Handle, EM_UNDO,0,0);
End;
//Кнопка «Вырезать»:
Begin
RichEdit1.CutTOClipboard;
End;
//Кнопка «Копировать »:
Begin
RichEdit1.CopyTOClipboard;
End;
//Кнопка «Вставить»:
Begin
RichEdit1.PasteFromСlipboard;
End;

Мы создали собственный текстовый редактор.


Индивидуальное задание 1. Вариант№9
Создание изображения Снеговика.
Для написания программы в первую очередь создаем новый проект.
Поместим на форме кнопки BitBtn1, BitBtn2 и BitBtn3. Для них изменим
заглавия (свойство Caption) соответственно на Снеговик, Снегопад и Ночь.
Также на форму поместим компонент Image1 из закладки Additional, который
служит для размещения на форме одного из трех поддерживаемых Delphi
типов изображений: растровой картинки, пиктограммы или метафайла.
Для компонента Image1 в инспекторе объектов установим значения свойств
Height и Width равными соответственно 400 и 280. В свойстве Canvas
содержится канва, с помощью которой программа бужет создать или
редактировать растровое изображение. Чтобы получить изображение
Снеговика напишем следующий обработчик события OnClik для кнопки
BitBtn1:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j:integer;
begin
//окрашивание фона
with Image1.Canvas do begin
Brush.Color := clGradientInactiveCaption ;
FillRect(Rect(0, 0, ClipRect.Right, ClipRect.Bottom));
//Рисуем основу снеговика
pen.Width:=1;
pen.Color:=clBlack;
brush.Color:=clSkyBlue ;
brush.Style:=bsSolid;
ellipse(60,265,190,395);
ellipse(75,165,175,265);
ellipse(85,85,165,165);
//Рисуем детали снеговика
brush.Color:=clBlack ;
ellipse(120,180,130,190); //Пуговки
ellipse(120,205,130,215);
ellipse(120,230,130,240);
ellipse(105,105,115,115); //Глаза
ellipse(135,105,145,115);
pen.Width:=4;
pen.Color:=clMaroon;
Arc(105,105,145,150,105,140,145,140);//Рот
pen.Width:=1;
pen.Color:=clBlack;
brush.Color:=(clRed);
polygon([Point(125,120), Point(125,135), Point(150,125)]); //Морковка
MoveTo(75,215);
pen.Width:=5;
pen.Color:=clOlive; //Руки
LineTo(10,150);
MoveTo(25,166);
LineTo(25,150);
MoveTo(25,165);
LineTo(10,165);
MoveTo(175,215);
LineTo(250,215);
MoveTo(235,215);
LineTo(250,205);
MoveTo(235,215);
LineTo(250,225);
MoveTo(245,135);
pen.Width:=9;
pen.Color:=clOlive; //Метла
LineTo(245,340);
pen.Width:=1;
pen.Color:=clYellow;
brush.Color:=(clYellow);
polygon([Point(245,340), Point(215,395), Point(270,395)]);
polygon([Point(245,340), Point(235,330), Point(255,330)]);
pen.Width:=9;
pen.Color:=clOlive;
MoveTo(240,340);
LineTo(250,340);
pen.Width:=1; //Ведро
pen.Color:=clBlack;
brush.Color:=clMedGray;
rectangle(110,55,140,85);
end;
end;
Результат воспроизведения изображения Снеговика
Для получения изображения Снегопада напишем такой обработчик события
OnClick для кнопки BitBtn2:
procedure TForm1.BitBtn2Click(Sender: TObject);
var i,j:integer;
begin
//Рисуем снежинки
with Image1.Canvas do begin
brush.Style:=bsClear;
Font.Color:=clAqua;
Font.Size:=15;
TextOut(10,10, '*' );
TextOut(55,15, '*' );
TextOut(110,20, '*' );
TextOut(195,10, '*' );
TextOut(155,25, '*' );
TextOut(225,25, '*' );
TextOut(260,40, '*' );
TextOut(255,80, '*' );
TextOut(235,80, '*' );
TextOut(215,55, '*' );
TextOut(180,55, '*' );
TextOut(210,90, '*' );
TextOut(265,115, '*' );
TextOut(190,110, '*' );
TextOut(205,150, '*' );
TextOut(185,260, '*' );
TextOut(265,205, '*' );
TextOut(265,300, '*' );
TextOut(255,330, '*' );
TextOut(220,300, '*' );
TextOut(80,45, '*' );
TextOut(45,55, '*' );
TextOut(10,65, '*' );
TextOut(70,90, '*' );
TextOut(20,105, '*' );
TextOut(35,130, '*' );
TextOut(65,140, '*' );
TextOut(15,310, '*' );
TextOut(15,215, '*' );
TextOut(65,230, '*' );
TextOut(40,240, '*' );
TextOut(30,265, '*' );
end;
end;

Результат воспроизведения изображения Снегопада


Для получения изображения Ночи напишем такой обработчик события
OnClick для кнопки BitBtn3:
procedure TForm1.BitBtn3Click(Sender: TObject);
var i,j:integer;
begin
//окрашивание фона
with Image1.Canvas do begin
Brush.Color := clNavy ;
FillRect(Rect(0, 0, ClipRect.Right, ClipRect.Bottom));
//Рисуем основу снеговика
pen.Width:=1;
pen.Color:=clBlack;
brush.Color:=clSkyBlue ;
brush.Style:=bsSolid;
ellipse(60,265,190,395);
ellipse(75,165,175,265);
ellipse(85,85,165,165);
//Рисуем детали снеговика
pen.Width:=2;
pen.Color:=clBlack;
brush.Color:=clBlack ;
ellipse(120,180,130,190); //Пуговки
ellipse(120,205,130,215);
ellipse(120,230,130,240);
Arc(105,105,115,115,105,110,115,110); //Глаза
Arc(135,105,145,115,135,110,145,110);
pen.Width:=4;
pen.Color:=clMaroon;
ellipse(115,140,135,150);//Рот
pen.Width:=1;
pen.Color:=clBlack;
brush.Color:=(clRed);
polygon([Point(125,120), Point(125,135), Point(150,125)]); //Морковка
MoveTo(75,215);
pen.Width:=5;
pen.Color:=clOlive; //Руки
LineTo(55,300);
MoveTo(60,285);
LineTo(45,295);
MoveTo(60,285);
LineTo(65,300);
MoveTo(175,215);
LineTo(250,215);
MoveTo(235,215);
LineTo(250,205);
MoveTo(235,215);
LineTo(250,225);
MoveTo(245,135);
pen.Width:=9;
pen.Color:=clOlive; //Метла
LineTo(245,340);
pen.Width:=1;
pen.Color:=clYellow;
brush.Color:=(clYellow);
polygon([Point(245,340), Point(215,395), Point(270,395)]);
polygon([Point(245,340), Point(235,330), Point(255,330)]);
pen.Width:=9;
pen.Color:=clOlive;
MoveTo(240,340);
LineTo(250,340);
pen.Width:=1; //Ведро
pen.Color:=clBlack;
brush.Color:=clMedGray;
rectangle(110,55,140,85);
end;
end;
end.

Результат воспроизведения изображения Ночи


Индивидуальное задание 2. Вариант№9
Разработать обучающую программу построения параллелограмма по
сторонам и углу между ними.
Написание обучающей программы начнем с создания новой. Для формы
установим следующие свойства
Caption - Деление отрезка пополам
Height - 475
Position - poScreenCenter
Width - 670 Ширина окна в пикселях экрана
Из закладки Standard в любое место полученной формы поместим три
компонента TPanel, которые разделят форму на три области: область ввода
данных и управления, область отображения изображения и область вывода
комментариев к построению. В инспекторе объектов для панелей установим
перечисленные ниже свойства
Panel1 Panel2 Panel3
Align alRight alBottom alClient
Caption
Height не меняется 85 не меняется
Width 175 не меняется не меняется
На левую панель области ввода данных и управления поместим следующие
компоненты:

1. TLabel1 для вывода на форме пояснительной текстовой надписи к


нижеследующему полю ввода данных. Для нее свойство Caption изменим на
Сторона а, TLabel2 на Сторона b, а TLabel3 на угол А.

2. TSpinEdit1, TSpinEdit2, TSpinEdit3 .В инспекторе объектов изменим


нижние границы диапазона возможных значений MinValue на
соответствующие и верхние границы диапазона возможных значений
MахValue на соответствующие.

3. Две кнопки с изображением TВitBtn для управления работой созданной


программы. Очистим свойство Caption. Отличительная особенность
пиктографической кнопки – свойство Glуph, с помощью которого
определяется растровое изображение, рисуемое на поверхности кнопки. Для
кнопки с указателем «назад» изменим значение свойства Enabled на False,
чем запретим компонент для выбора;

4. TButton для осуществления завершения работы программы. Для нее


изменим заглавие на Выход.

На нижней панели области вывода комментариев к построению из закладки


Standard поместим компонент TMemo, предназначенный для отображения
достаточно длинного текста. Его свойства изменяем соответственно:
Align - alClient
Font.Name - Garamond
Font.Size - 22
Lines
ReadOnly – True

Всю оставшуюся панель области отображения изображения займет


компонент TImage, когда для него будет установлено значение свойства
Align alClient. После завершения создания формы переходим к программной
реализации поставленной задачи. Переключаемся в окно программного кода
и объявляем глобальные переменные, сделав следующую запись после
зарезервированного слова Implementation:

var a,b,c,d,i: Integer;


x,y: Integer;
ax,ay:int64;

Возвращаемся в окно формы и создадаем процедуру реагирования редактора


числа SpinEdit1, SpinEdit2, SpinEdit3 на событие изменения значения, дважды
кликнув на нем. На экране возникает окно программного кода с созданной
процедурой SpinEdit1Change(и другие), куда и введем следующий фрагмент
программы:
//
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
i:=0;
BitBtn2.Enabled:=False;
BitBtn1.Enabled:=True;
end;
//
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
i:=0;
BitBtn2.Enabled:=False;
BitBtn1.Enabled:=True;
end;
//
procedure TForm1.SpinEdit3Change(Sender: TObject);
begin
i:=0;
BitBtn2.Enabled:=False;
BitBtn1.Enabled:=True;
end;
Демонстрация построения параллелограмма разбита на несколько этапов,
которые по очереди будет вызывать кнопка «вперед» на форме. Поэтому
необходимо создать соответствующее число подпрограмм, каждая из
которых будет реализовать отдельный этап.
Первый этап построения –отметка произвольной прямой на плоскости. Для
реализации этой части введем следующий фрагмент программы:

procedure Pryamaya1; //Чертим прямую d


begin
d:=13;
d:=10*d;
x:=160; y:=300;
Form1.Image1.Canvas.Pen.Width:=3;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Brush.Style:=bsClear;

Form1.Image1.Canvas.Rectangle(0,0,Form1.Image1.Width,Form1.Image1.Height);
Form1.Image1.Canvas.MoveTo(x-d,y);
Form1.Image1.Canvas.LineTo(x+d,y);
Form1.Image1.Canvas.Font.Size:=22;
Form1.Image1.Canvas.Pen.Width:=1;
Form1.Image1.Canvas.TextOut(x-d-15,y+2,'d');
Form1.Memo1.Text:='Проведем произвольную прямую d';
end;
Для построения параллелограмма вторым этапом отметим точку А на
проведенной прямой:

procedure Tochka1; //Отмечаем точку А на прямой d


begin
a:=Form1.SpinEdit2.Value;
a:=10*a;
x:=160; y:=300;
Form1.Image1.Canvas.Pen.Width:=3;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Pen.Color:=clRed;
Form1.Image1.Canvas.Brush.Color:=clRed;
Form1.Image1.Canvas.Ellipse(x-a-5,y-5,x-a+5,y+5);
Form1.Image1.Canvas.Brush.Style:=bsClear;
Form1.Image1.Canvas.Pen.Style:=psClear;
Form1.Image1.Canvas.TextOut(x-a-15,y+2,'A');
Form1.Image1.Canvas.Brush.Style:=bsClear;
Form1.Memo1.Text:='Отметим на прямой d произвольную точку А';
end;
Третьим этапом отметим отрезок AD следующей подпрограммой:

Procedure Otrezok1; // Отмечаем отрезок AD


begin
a:=Form1.SpinEdit2.Value;
a:=10*a;
x:=160; y:=300;
Form1.Image1.Canvas.Pen.Width:=4;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Pen.Color:=clRed;
Form1.Image1.Canvas.MoveTo(x-a,y);
Form1.Image1.Canvas.LineTo(x+a,y);
Form1.Image1.Canvas.Font.Size:=22;
Form1.Image1.Canvas.TextOut(x+a+3,y+2,'D');
Form1.Image1.Canvas.TextOut(x-a-15,y+2,'A');
Form1.Image1.Canvas.Pen.Width:=1;
Form1.Memo1.Text:='Отложим вправо от точки А отрезок AD равный
отрезку b';
Form1.Image1.Canvas.Pen.Color:=clWhite;
Form1.Image1.Canvas.Pen.Width:=3;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Pen.Color:=clRed;
Form1.Image1.Canvas.Brush.Color:=clRed;
Form1.Image1.Canvas.Ellipse(x+a,y+4,x+a+10,y-6);
Form1.Image1.Canvas.Brush.Style:=bsClear;
end;
Далее из точки А проведем произвольную прямую под заданным углом:

procedure Ugol; //Отмечаем угол А


begin
b:=Form1.SpinEdit3.Value;
a:=Form1.SpinEdit2.Value;
a:=10*a;
d:=13;
d:=10*d;
x:=160; y:=300;
Form1.Image1.Canvas.Pen.Color:=clBlack;
Form1.Image1.Canvas.Brush.Color:=clWhite;

Form1.Image1.Canvas.Rectangle(0,0,Form1.Image1.Width,Form1.Image1.Height)
;
Form1.Image1.Canvas.Pen.Color:=clRed;
Form1.Image1.Canvas.Arc(round(x-a+20),round(y+30),round(x-70),round(y-
30),round(x-30),round(y),round(x+(x-30)*(cos(b*pi/180))),round(y-
(y)*(sin(b*pi/180))));
Form1.Memo1.Text:='Построим угол А с центром в вершине А';
Form1.Image1.Canvas.MoveTo(x-a,y-5);
Form1.Image1.Canvas.Pen.Width:=4;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Pen.Color:=clBlack;
Form1.Image1.Canvas.Brush.Color:=clWhite;
ax:=x+round((x-30)*(cos(b*pi/180)));
ay:=y-round((y)*(sin(b*pi/180)));
Form1.Image1.Canvas.LineTo(ax,ay);

Form1.Image1.Canvas.Pen.Width:=3;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Pen.Color:=clBlack;
Form1.Image1.Canvas.Brush.Color:=clBlack;
Form1.Image1.Canvas.Ellipse(x+a,y+4,x+a+10,y-6);
Form1.Image1.Canvas.Brush.Style:=bsClear;
Form1.Image1.Canvas.MoveTo(x-a,y);
Form1.Image1.Canvas.LineTo(x+a,y);
Form1.Image1.Canvas.Font.Size:=22;
Form1.Image1.Canvas.TextOut(x+a+3,y+2,'D');
Form1.Image1.Canvas.TextOut(x-a-15,y+2,'A');
Form1.Image1.Canvas.MoveTo(x-d,y);
Form1.Image1.Canvas.LineTo(x+d,y);
Form1.Image1.Canvas.TextOut(x-d-15,y+2,'d');
Form1.Image1.Canvas.Pen.Width:=3;
Form1.Image1.Canvas.Pen.Style:=psSolid;
Form1.Image1.Canvas.Pen.Color:=clBlack;
Form1.Image1.Canvas.Brush.Color:=clBlack;
Form1.Image1.Canvas.Ellipse(x-a-5,y-5,x-a+5,y+5);
Form1.Image1.Canvas.Brush.Style:=bsClear;
Form1.Image1.Canvas.Pen.Style:=psClear;
Form1.Image1.Canvas.TextOut(x-a-15,y+2,'A');
Form1.Image1.Canvas.Brush.Style:=bsClear;
Form1.Image1.Canvas.Pen.Width:=4;
Form1.Image1.Canvas.Pen.Style:=psSolid;
end;

Далее нужно отметить на прямой проведенной из угла А отрезок АВ:


Вернувшись в окно формы и дважды кликнув на кнопке с обозначением
«вперед», в результате чего на экране появится окно программного кода с
созданной процедурой BitBtn1Click. Данная кнопка должна осуществлять
вызов подпрограмм рисования отдельных элементов рисунка, приведенных
выше, что реализуется с помощью оператора выбора Case. Для этого введем
следующий фрагмент программного кода:

procedure TForm1.BitBtn1Click(Sender: TObject);


begin
i:=i+1;
Case i of
1: Pryamaya1;
2: Begin BitBtn2.Enabled:=True;
Tochka1;
end;
3: Begin BitBtn2.Enabled:=True;
Otrezok1;
end;
4: Begin BitBtn2.Enabled:=True;
Ugol;
end;
5: Begin BitBtn2.Enabled:=True;
Otrezok2;
end;
6: Begin BitBtn2.Enabled:=True;
Pryamaya2;
end;
7: Begin BitBtn2.Enabled:=True;
Pryamaya3;
end;
8: Begin BitBtn2.Enabled:=True;
Tochka2;
end;
9: begin Tochka2;
BitBtn1.Enabled:=False;
end;
end;
end;

Далее вернувшись в окно формы и дважды кликнув на кнопке с


обозначением «назад», в результате чего на экране появится окно
программного кода с созданной процедурой BitBtn2Click. Эта кнопка должна
осуществлять вызов подпрограмм рисования отдельных элементов рисунка,
но каждый раз заново прорисовывая все элементы, кроме последнего, что
также реализуется с помощью оператора выбора Case. Введем следующий
фрагмент программы:

procedure TForm1.BitBtn2Click(Sender: TObject);


begin
i:=i-1;
Case i of
1: Begin Pryamaya1;
BitBtn2.Enabled:=False;
end;
2: Begin Pryamaya1;
Tochka1;
end;
3: Begin Pryamaya1;
Tochka1;
Otrezok1;
end;
4: Begin Pryamaya1;
Tochka1;
Otrezok1;
Ugol;
end;
5: Begin Pryamaya1;
Tochka1;
Otrezok1;
Ugol;
Otrezok2;
end;
6: Begin Pryamaya1;
Tochka1;
Otrezok1;
Ugol;
Otrezok2;
Pryamaya2;
end;
7: Begin Pryamaya1;
Tochka1;
Otrezok1;
Ugol;
Otrezok2;
Pryamaya2;
Pryamaya3;
end;
8: Begin Pryamaya1;
Tochka1;
Otrezok1;
Ugol;
Otrezok2;
Pryamaya2;
Pryamaya3;
Tochka2;
BitBtn1.Enabled:=True;
end;
end;
end;

Следующая процедура, созданная путем двойного нажатия на кнопку Выход,


реализует закрытие программы:

procedure TForm1.Button2Click(Sender: TObject);


begin
close;
end;
end.