|
|
#1
|
|||
|
|||
Мое начало в ООП
Привет всем. мой вопрос такой... Пытаюсь разобраться а ООП, вот придумал себе задание.
Создается динамически некая фигура (тело). Тело начинает движение пока светофор зеленый, в противном случае оно стоит. Код:
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. если создаются динамически объекты, каким образом можно передать в процедуру один объект для его обработки Последний раз редактировалось crossmark, 08.09.2009 в 22:25. |