创建子窗体 
procedure Tf_main.N2Click(Sender: TObject);
begin
  if not assigned(f_czypz) then
   begin
     f_czypz:=tf_czypz.Create(self);
     f_czypz.Show;
   end;
end;
f_czypz是子窗体的名称。
关闭子窗体
procedure TF_czypz.FormClose(Sender: TObject; var Action: TCloseAction);
begin  
 action:=cafree;
end;
问题是我第一次打开子窗体时可以打开。可是关闭后就打不开了 ,这是为什么啊?

解决方案 »

  1.   

    你这样试试!
    procedure Tf_main.N2Click(Sender: TObject);
    begin
      if not assigned(f_czypz) then
       begin
         f_czypz:=tf_czypz.Create(self);
         f_czypz.Show;
         f_czypz.free;
       end;
    end;
    有问题请发信息到我的E-mail:[email protected]
      

  2.   

    procedure Tf_main.N2Click(Sender: TObject);
    begin
      if not assigned(f_czypz) and f_czypz<>nil then
       begin
         f_czypz:=tf_czypz.Create(self);
         f_czypz.Show;
       end;
    end;
    f_czypz是子窗体的名称。
    关闭子窗体
    procedure TF_czypz.FormClose(Sender: TObject; var Action: TCloseAction);
    begin  
     action:=cafree;
     F_Czypz:=nil;
    end;
      

  3.   

    嘿嘿,你值释放了对象,没有释放指针。你跟一下,当你第二次点击打开窗体时,Assign(F_CZYPZ) 为 True!!!!!!所以应该用 FreeAndNil(F_CZYPZ).用 F_CZYPZ.Free  也不行的!!