Привет всем. мой вопрос такой... Пытаюсь разобраться а ООП, вот придумал себе задание.
Создается динамически некая фигура (тело). Тело начинает движение пока светофор зеленый, в противном случае оно стоит.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Shape1: TShape;
Timer1: TTimer;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type TTelo=class
private
fig:TShape;
fposX:integer;
fposY:integer;
fstop:boolean;
procedure PColor(const Value: Tcolor);
function GetY: integer;
procedure SetY(const Value: integer);
public
constructor Create;
Procedure Position;
property Color:Tcolor write PColor;
property y:integer read GetY write SetY;
end;
var
Form1: TForm1;
Telo:array[1..10] of TTelo;
t:byte;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
t:=0;
speedbutton1.Caption:='вкл. зеленый';
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.tag=0 then begin
speedbutton1.Caption:='вкл.зеленый';
shape1.Brush.Color:=clGreen;
speedbutton1.Tag:=1;
exit;
end;
if SpeedButton1.tag=1 then begin
speedbutton1.Caption:='тъы. ?хыхэ?щ';
shape1.Brush.Color:=clred;
speedbutton1.Tag:=0;
exit;
end;
end;
{ TTelo }
constructor TTelo.Create;
var v:byte;
begin
fig:=TShape.Create(nil);
fig.Parent:=form1;
Randomize;
fig.Left:=Random(800);
fig.Width:=40;
fig.Height:=40;
v:=Random(5);
case v of
0: fig.Brush.Color:=clMoneyGreen;
1: fig.Brush.Color:=clGreen;
2: fig.Brush.Color:=clblue;
3: fig.Brush.Color:=clMaroon;
4: fig.Brush.Color:=clYellow;
5: fig.Brush.Color:=clteal;
end;
end;
function TTelo.GetY: integer;
begin
y:=fig.Top;
end;
procedure TTelo.PColor(const Value: Tcolor);
begin
//
end;
procedure TTelo.Position;
begin
telo[t].fposY:=y;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
inc(t,1);
if t=10 then exit;
telo[t]:=TTelo.Create;
// timer1.Enabled:=true;
end;
procedure TTelo.SetY(const Value: integer);
begin
fig.Top:=y;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
// for i:=1 to 10 do
// begin
telo[t].Position;
// end;
end;
end.
lmikle: Пользуемся тегами!!!
1. вопрос в том, что более правильней все организовать.
2. если создаются динамически объекты, каким образом можно передать в процедуру один объект для его обработки