Помощь - Поиск - Пользователи - Календарь
Полная версия: Запар с графикой
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Масик
Всем ЗДРАВСТВУЙТЕ!!! Написал прогу для построения фигуры с конструктором и деструктором, но что-то не получилось. Помогите, кто может. unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TPic = class
InX,InY:integer;
constructor Create(InX,InY:integer);
procedure Draw; virtual;
end;
TDuga = class(TPic)
InXR,InYR:integer;
constructor Create(InX,InY:integer;InXR,InYR:integer);
procedure Draw; override;
end;
var
Form1: TForm1;
Duga:TDuga;
x0,y0,xr,yr:integer;

implementation

{$R *.dfm}
Constructor TPic.Create(InX,InY:integer);
begin
x0:=InX;
y0:=InY;
end;

Constructor TDuga.Create(InX,InY,InXR,InYR:integer);
begin
//x0:=InX; y0:=InY;
inherited create(InX,InY);
xr:=InXR;
yr:=InYR;
end;

Procedure TPic.Draw;
begin
Form1.Canvas.Arc(x0-xr,y0-yr,x0+xr,y0+yr,x0+xr,y0,x0,y0-yr);
end;

Procedure TDuga.Draw;
begin
Form1.Canvas.Arc(x0-xr,y0-yr,x0+xr,y0+yr,x0+xr,y0,x0,y0-yr);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Duga.Create(200,200,100,50);
Duga.Draw;
end;

end.
hiv
Не надо хранить переменные объекта (класса) как глобальные!
Переделал:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TPic = class
X,Y:integer;
constructor Create(InX,InY:integer);
procedure Draw; virtual;
end;

TDuga = class(TPic)
XR,YR:integer;
constructor Create(InX,InY,InXR,InYR:integer);
procedure Draw; override;
end;

var
Form1: TForm1;
Duga:TDuga;

implementation

{$R *.dfm}

Constructor TPic.Create(InX,InY:integer);
begin
x:=InX;
y:=InY;
end;

Constructor TDuga.Create(InX,InY,InXR,InYR:integer);
begin
inherited create(InX,InY);
xr:=InXR;
yr:=InYR;
end;

Procedure TPic.Draw;
begin
Form1.Canvas.Pixels[x,y]:=Form1.Canvas.Pen.Color;
end;

Procedure TDuga.Draw;
begin
Form1.Canvas.Arc(x-xr,y-yr,x+xr,y+yr,x+xr,y,x,y-yr);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Duga:=TDuga.Create(200,200,100,50);
Duga.Draw;
end;

end.

Масик
Огромное тебе СПАСИБО, hiv!!! Век не забуду
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.