У меня есть 2 функции и 2 таймера. 
В первом таймере каждые 10 секунд вызывается 1 функция, которая создает TShape, с определенными параметрами:
	Код:
	function TForm1.ShapeCreating(id:integer; color:Tcolor):boolean;
var shape:TShape;
begin
shape:=TShape.Create(Form1);
shape.Parent:=Form1;
shape.Brush.color:=color;
shape.width:=random(300)+50;
shape.height:=random(300)+50;
shape.Left:=random(Form1.Width-shape.Width)+1;
shape.top:=1;
shape.tag:=id;
result:=true;
end;
 
Тем временем вторая функция по таймеру двигает этот Shape, пока не создастся новый.
	Код:
	function TForm1.ShapeGo(id:integer): boolean;
var Shape:TShape;
begin
  Shape.Tag:=id;
  shape.top:=shape.Top+shapespeed;
end;
 
idt изначально равна нулю и меняется во втором таймере:
	Код:
	procedure TForm1.CreatingTimerTimer(Sender: TObject);
begin
idt:=idt+1;
ShapeCreating(idt,clred);
end;
 
А вот 1 таймер:
	Код:
	procedure TForm1.GameTimerTimer(Sender: TObject);
var shape:tshape;
begin
 ShapeGo(idt);
 if shape.top>=Form1.height then shape.Destroy;
end;
 
Но моя задумка не работает: Создается Shape, но вместо того, чтобы его двигать, моя функция двигает форму. Помогите пожалуйста