Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_OOP.doc
Скачиваний:
17
Добавлен:
11.03.2015
Размер:
1.04 Mб
Скачать
  1. Модуль 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.

  1. Модуль 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]