Алгоритмы
Алгоритмы этой работы идентичны предыдущей.
Лабораторная работа №9
Создание собственного класса и объектов
Задание: Средствами ООП, реализовать задачу в соответствии с вариантом шестой лабораторной работы. Решение задачи изобразить на холсте.
Интерфейс программы
Интерфейс программы идентичен шестой лабораторной работе.
Код программы
Исходный код модуля с классом:
unit Unit1;
interface
uses Windows, Graphics, Classes,ExtCtrls;
type
Tpo = array of Tpoint;
Rect = TRect;
TMyClass = class
countpoint: integer;
po:tpo;
Point: TPoint;
FPColor,FBColor: TColor;
Canvas: TCanvas;
Rect: TRect;
ColPoint: byte;
Width: word;
Rad: word;
Img: TImage;
r1:rect;
Procedure SetPenColor(c: Tcolor);
Procedure SetBColor (c: Tcolor); // задать цвет
Procedure RenPenColor;
procedure VarRad;
procedure VarWidth;
Constructor Create(Img1: TImage;ColPoint: byte);
Destructor Destroy;override;
function colpo(po:tpo):integer;
procedure postroenie(Img: TImage;var po:tpo);
procedure addPoint(x,y,countPoint:integer;var po:tpo);
procedure clear;
property PCol:Tcolor Read FPColor Write SetPenColor;
property BCol:TColor Read FBColor Write SetBColor;
private
{ Private declarations }
public
{ Public declarations }
end;
var
MyClass: TMyClass;
implementation
procedure TMyClass.SetBColor(c: Tcolor);
begin
end;
Procedure TMyClass.SetPenColor(c: Tcolor);
begin
end;
procedure TMyClass.VarRad;
begin
end;
procedure TMyClass.VarWidth;
begin
end;
procedure TMyClass.addPoint(x,y,countPoint:integer; var po:tpo);
begin
setLength(po,countPoint+1);
po[countPoint].X:=x;
po[countPoint].Y:=y;
end;
destructor TMYClass.Destroy;
begin
inherited;
end;
procedure TMyClass.postroenie(Img: TImage; var po:tpo);
begin
img.Canvas.Pen.Color:=Rgb(0,0,255);
img.Canvas.Brush.Color:=rgb(100,0,100);
img.Canvas.rectangle(po[0].X,po[0].y, po[1].X,po[1].y);
end;
procedure TMyClass.RenPenColor;
begin
end;
function TMyClass.colpo(po:tpo):integer;
var i,d:integer;
begin
d:=0;
for I := 2 to length(po) - 1 do
if ((po[i].X>po[0].X) and (po[i].X<po[1].X)) then
if ((po[i].y>po[0].y) and (po[i].y<po[1].y)) then
d:=d+1;
colpo:=d;
end;
procedure TMyClass.Clear;
begin
setLength(po,countPoint);
Img.Canvas.Brush.Color := ClWhite;
Img.Canvas.FillRect(Img.Canvas.ClipRect)
end;
constructor TMyClass.Create(Img1: TImage;ColPoint: byte);
begin
img:=Img1;
rad:= 0;
po:=0;
end;
end.
Исходный код программы:
procedure TForm1.FormActivate(Sender: TObject);
begin
a:=0;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
Form1.StatusBar1.Panels[0].Text:='Кол-во точек в прямоугольнике = '+floatTostr(MClass.colpo(po));
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
Image1.Canvas.Pen.Color:=Rgb(0,25,0);
Image1.Canvas.Brush.Color:=Rgb(0,26,0);
Image1.Canvas.Ellipse(x-2,y-2,x+2,y+2);
MClass.addpoint(X,Y,A,po);
if a=1 then
begin
MClass.postroenie(Image1,po);
end;
a:=a+1;
end;