Отчет17 (АЯиП отчеты по лабам (кроме 24))
Описание файла
Файл "Отчет17" внутри архива находится в следующих папках: АЯиП отчеты по лабам (кроме 24), Отчеты. Документ из архива "АЯиП отчеты по лабам (кроме 24)", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Отчет17"
Текст из документа "Отчет17"
Лабораторная работа 17.
Delphi. Программирование с использованием классов. Графика. Обработка события от нажатия клавиши мыши.
Задача: Разработать иерархию классов Delphi. Использовать виртуальный метод, наследование конструкторов, свойства. Разместить определение классов в отдельном модуле. Класс, позволяющий рисовать окружность некоторого размера с центром в точке, определенной нажатием левой клавиши мыши. Класс, позволяющий рисовать квадрат того же размера с центром в точке, определенной нажатием правой клавиши мыши.
Параметры задаются с использованием интерфейсных элементов.
В отчете показать иерархии используемых классов Delphi и разработанных классов, граф состояния пользовательского интерфейса и объектную декомпозицию.
Объектная декомпозиция:
Активизировать
Главное окно
приложения
Квадрат
Круг
1 1
2 2
3 3 3 3
-
Создать и нарисовать
-
Изменить размер
-
Уничтожить
Граф состояния интерфейса:
Главное
окно приложения
Диаграмма классов:
Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ImageMouseDown(Sender: TObject; Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
Var A:TVidFig; x,y,FRadius:Word;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Canvas.Rectangle(-100,-100,1000,1000);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.Pen.Color:=clBlack;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.Pen.Color:=clBlack;
Edit1.Text:='20';
end;
procedure TForm1.ImageMouseDown(Sender: TObject; Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
A.Free;
if Button=mbLeft then
begin
A:=TKrug.Create(Image1,X,Y,strtoint(Edit1.Text),Image1.Canvas.Pen.Color);
end;
if Button=mbRight then
begin
A:=TKvadrat.Create(Image1,X,Y,strtoint(Edit1.Text),Image1.Canvas.Pen.Color);
end;
end;
initialization
finalization A.Free;
end.
unit Unit2;
interface
uses extctrls,Graphics;
Type TVidFig=class
private x,y,FRadius:Word;
FColor:TColor; Image:TImage;
procedure Razmer(rr:word);
procedure Clear;
public
Constructor Create(aImage:TImage;xx,yy,rr:Word;aColor:TColor);
Procedure Ris; virtual; abstract;
Property Radius:Word write Razmer;
end;
TKrug=class(TVidFig)
public Procedure Ris; override;
end;
TKvadrat=class(TVidFig)
public Procedure Ris; override;
end;
implementation
uses Unit1;
constructor TVidFig.Create;
begin
inherited Create;
Image:=aImage;
x:=xx;
y:=yy;
FRadius:=rr;
Ris;
end;
procedure TVidFig.Razmer;
begin Clear;
FRadius:=rr;
Ris;
end;
procedure TVidFig.Clear;
begin
Ris;
end;
procedure TKrug.Ris;
begin
Image.Canvas.Pen.Color:=FColor;
Image.Canvas.Ellipse(x-FRadius,y-FRadius,x+FRadius,y+FRadius);
end;
procedure TKvadrat.Ris;
begin
Image.Canvas.Pen.Color:=FColor;
Image.Canvas.Rectangle(x-FRadius, y-FRadius,x+FRadius,y+FRadius);
end;
end.