for i:= 0 to 10 do
begin
  btn1[i] := TButton.Create(self);
  btn1[i].Parent := self;
  btn1[i].Tag := i;
  btn1[i].SetBounds(10,10,75,32*i);
  btn1[i].OnClick := btn1Click;
end;Tform1.btn1Click(Sender:TObject)
var
  btn :TButton;
begin
  if not (Sender is TButton) then
    Exit;
  btn := (Sender as TButton);
  if (Assigned(btn2[btn.Tag]))
    exit; //已经创建Button2
  btn2[btn.Tag] := TButton.Create(self);
  btn2[i].Parent := self;
  btn2[i].Tag := i;
  btn2[i].OnCLick := btn2Click;
  btn2[i].SetBounds(100,10,75,32*i);
end;Tform1.btn1Click(Sender:TObject)
var
  btn :TButton;
begin
  if not (Sender is TButton) then
    Exit;
  btn := (Sender as TButton);
  if (Assigned(label1[btn.Tag]))
    exit; //已经创建Label
  label1[btn.Tag] := TButton.Create(self);
  label1[i].Parent := self;
  label1[i].Tag := i;
  label1[i].SetBounds(200,10,75,32*i);
end;