- •Тема, цель работы, вариант задания.
- •Тема, цель работы, вариант задания.
- •Модуль GraphObj.
- •Модуль Point.
- •Модуль Circle.
- •Модуль Rect.
- •Модуль Line.
- •Модуль Square.
- •Модуль Trian.
- •Основной модуль oop_Lab3.
- •Тема, цель работы, вариант задания.
- •Тема, цель работы, вариант задания.
- •Тема, цель работы, вариант задания.
-
Модуль Line.
unit Line;
interface
uses
GraphObj, Graphics, Grids, SysUtils;
type
{ объект - Прямая, наследник абстрактного класса }
TLine = class(TGraphObj)
protected
FX2: Integer; // координаты
FY2: Integer; // второго конца прямой
public
constructor Create(ACanvas: TCanvas; AName: string; AX, AY, AX2, AY2: Integer; AColor: TColor; AVisible: Boolean);
procedure Draw(AColor: TColor); override;
procedure Move(dX, dY: Integer); override;
procedure DrawGrid(AStringGrid: TStringGrid); override;
procedure EditGrid(AStringGrid: TStringGrid; ARow: Integer); override;
property X2: integer read FX2 write FX2;
property Y2: integer read FY2 write FY2;
end;
implementation
constructor TLine.Create;
begin
// перекрываем родительский конструктор
inherited Create(ACanvas, AName, AX, AY, AColor, AVisible);;
// инициализируем новые свойства
FClassName := 'TLine';
FX2 := AX2;
FY2 := AY2;
end;
procedure TLine.Draw(AColor: TColor);
begin
with FCanvas do
begin
Pen.Color := AColor;
MoveTo(FX, FY); // координаты 1-го конца наследуются от родителя
LineTo(FX2, FY2)
end
end;
procedure TLine.Move(dX, dY: Integer);
begin
Hide;
inc(FX, dX);
inc(FY, dY);
inc(FX2, dX);
inc(FY2, dY);
Show
end;
procedure TLine.DrawGrid(AStringGrid: TStringGrid);
begin
// перекрываем родительский метод
inherited DrawGrid(AStringGrid);
// и добавляем новые свойства
with AStringGrid do
begin
Cells[0, 4] := 'X1';
Cells[0, 5] := 'Y1';
Cells[0, 6] := 'X2';
Cells[1, 6] := IntToStr(FX2);
Cells[0, 7] := 'Y2';
Cells[1, 7] := IntToStr(FY2);
end
end;
procedure TLine.EditGrid(AStringGrid: TStringGrid; ARow: Integer);
begin
inherited EditGrid(AStringGrid, ARow);
with AStringGrid do
case ARow of
6: FX2 := StrToInt(Cells[1, 6]);
7: FY2 := StrToInt(Cells[1, 7]);
end;
end;
end.
-
Модуль Square.
unit Square;
interface
uses
Point, Graphics, Grids, SysUtils;
type
{ объект - Квадрат, потомок Точки }
TSquare = class(TPoint)
protected
FWidth: Integer; // размер стороны
public
// объявление перекрытых родительских методов
constructor Create(ACanvas: TCanvas; AName: string; AX, AY, AWidth: Integer; AColor: TColor; AVisible: Boolean);
procedure Draw(AColor: TColor); override;
procedure DrawGrid(AStringGrid: TStringGrid); override;
procedure EditGrid(AStringGrid: TStringGrid; ARow: Integer); override;
property Width: Integer read FWidth write FWidth;
end;
implementation
constructor TSquare.Create;
begin
inherited Create(ACanvas, AName, AX, AY, AColor, AVisible);
FClassName := 'TSquare';
FWidth := AWidth;
end;
procedure TSquare.Draw(AColor: TColor);
begin
FCanvas.Pen.Color := AColor;
FCanvas.Rectangle(FX, FY, FX + FWidth, FY + FWidth)
end;
procedure TSquare.DrawGrid(AStringGrid: TStringGrid);
begin
inherited DrawGrid(AStringGrid);
with AStringGrid do
begin
Cells[0, 6] := 'Width';
Cells[1, 6] := IntToStr(FWidth);
end
end;
procedure TSquare.EditGrid(AStringGrid: TStringGrid; ARow: Integer);
begin
inherited EditGrid(AStringGrid, ARow);
if ARow = 6 then FWidth := StrToInt(aStringGrid.Cells[1, 6]);
end;
end.