Form1为主窗口,Form2为子窗口:
procedure TForm1.Button1Click(Sender: TObject);
begin
  form2:=Tform2.create(self);
  Form2.Show;
end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=Cafree;
end;

解决方案 »

  1.   

    还应该在Form2的Destroy中写
      Form2 := nil;
      

  2.   

        1、将Form的FormStyle设为fsMDIChild。
        2、假设ChildForm为子窗体名称,在主窗体的“新建字窗体”菜单的OnClick事件中写上“ChildForm:=TChildForm.Create(Self)”语句就可以了。
        3、在子窗体的OnClose事件中写上“Action := caFree”语句,此子窗体就可以和普通窗体一样关闭。
        注:Delphi的菜单Project-->Opertions,在Form页片中必须将子窗体设为“Available Form”,程序才可通过编译。