Private
  window: array of TForm;procedure TForm1.Button1Click(Sender: TObject);//创建Form
var i: integer;
begin
  setLength(window,4);
  for i:=0 to 3 do
  begin
    window[i]:= TForm.Create(nil);
    window[i].Parent:= Form1;//主Form
    window[i].Tag:= i;
    window[i].Name:= 'W_'+IntToStr(i);
    window[i].Show;
  end;
end;procedure TForm1.Button2Click(Sender: TObject);//销毁
var i: integer;
begin
  for i:=0 to 3 do
    if FindComponent('W_'+IntToStr(i))<> nil then window[i].Destroy;
end;FindComponent 找不到,请问应该如何处理

解决方案 »

  1.   

    还有个疑问点,
    我在创建时有设Name属性,Name不是唯一的吗?那为什么每点一次Button1就会创建4个Form呢?
      

  2.   

    不是数组的缘故,是没有指定窗口的父亲。
    procedure TForm1.Button1Click(Sender: TObject);
    var
        i: integer;
    begin
     setLength(window,4);
      for i:=0 to 3 do
      begin
        window[i]:= TForm.Create(Owner);///////////////////////////////改一下。
        window[i].Parent:= Form1;//&Ouml;÷Form
        window[i].Tag:= i;
        window[i].Name:= 'W_'+IntToStr(i);
        window[i].Show;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
        i: integer;
    begin
      for i:=0 to 3 do
        if Owner.FindComponent('W_'+IntToStr(i))<>nil then////////////////////改一下
            window[i].Destroy;
    end;
      

  3.   

    var i:integer;
    begin
      for i:=0 to screen.FormCount-1 do
        showmessage(screen.Forms[i].Caption);
    end;