要实现动态创建10个(或更多)tshape控件,然后把所有的shape的onmousedowm事件都指向一个函数,怎么做,下面的为什么不行
procedure TForm1.Button1Click(Sender: TObject);
var
  sp:array[0..10]of Tshape;
begin
   sp[0]:=Tshape.Create(self);
      sp[0].Left:=0;
      sp[0].Top:=0;
      sp[0].Width:=30;
      sp[0].Height:=10;
      sp[0].Shape:=stRoundSquare;
      sp[0].Visible:=true;
      sp[0].Show;end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sp:array[0..10]of Tshape;
    begin
       sp[0]:=Tshape.Create(self);
          sp[0].Left:=0;
          sp[0].Top:=0;
          sp[0].Width:=30;
          sp[0].Height:=10;
          sp[0].Shape:=stRoundSquare;
          sp[0].Parent:=self ;end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sp:array[0..9]of Tshape; i:integer;
    begin
      for i:=0 to 9 do
      begin
          sp[i]:=Tshape.Create(self);
          sp[0].Parent:=self ;
          sp[i].Left:=//位置自己调;
          sp[i].Top:=//位置自己调;
          sp[i].Width:=30;
          sp[i].Height:=10;
          sp[i].Shape:=stRoundSquare;
      end;
    end;
      

  3.   

    procedure TForm1.AMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      Caption := IntToStr(X) + ';' + IntToStr(Y);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      sp:array[0..10]of Tshape;
    begin
       sp[0]:=Tshape.Create(self);
         sp[0].Parent:=self ;
          sp[0].Left:=0;
          sp[0].Top:=0;
          sp[0].Width:=30;
          sp[0].Height:=10;
          sp[0].Shape:=stRoundSquare;
          sp[0].Visible:=true;
          sp[0].Show;
          sp[0].:=self ;
          Sp[0].OnMouseMove := AMouseMove;
    end
      

  4.   

    //是把10个Shape控件都设置属性。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sp:array[0..9]of Tshape; i:integer;
    begin
      for i:=0 to 9 do
      begin
          sp[i]:=Tshape.Create(self);
          sp[0].Parent:=self ;
          sp[i].Left:=//位置自己调;
          sp[i].Top:=//位置自己调;
          sp[i].Width:=30;
          sp[i].Height:=10;
          sp[i].Shape:=stRoundSquare;
      end;
    end;//这个是把10个shape都设成同一个事件procedure TForm1.AMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      Caption := IntToStr(X) + ';' + IntToStr(Y);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      sp:array[0..10]of Tshape;
    begin
       sp[0]:=Tshape.Create(self);
         sp[0].Parent:=self ;
          sp[0].Left:=0;
          sp[0].Top:=0;
          sp[0].Width:=30;
          sp[0].Height:=10;
          sp[0].Shape:=stRoundSquare;
          sp[0].Visible:=true;
          sp[0].Show;
          sp[0].:=self ;
          Sp[0].OnMouseMove := AMouseMove;
    end
      

  5.   

    var
      sp:array[0..10]of Tshape;
     i:integer;
    begin
      for i:= low(sp) to high(sp) do
      begin
       sp[i]:=Tshape.Create(self);
          sp[i].Left:=0;
          sp[i].Top:=0;
          sp[i].Width:=??;
          sp[i].Height:=??;
          sp[i].Shape:=stRoundSquare;
          sp[i].Visible:=true;
          sp[i].Show;
      end;
    end;