if not assigned(form) then 
begin 
  form:=tform.Create(self);
  form.show 
end
else
  exit;

解决方案 »

  1.   

    最好用模式窗口,就是form.showmodel.
      

  2.   

    if not assigned(form2) then 
    begin 
      form2:=tform2.Create(self);
      form2.show 
    end; //这样没有问题,但是在form的close要写
      action := acfree; //窗体释放;
    destory里要写
      form2 := nil;//让它在内存中消失
      

  3.   

    if not assigned(form2) then 
    begin 
      form2:=tform2.Create(self);
      form2.show 
    end; //这样没有问题,但是在form的close要写
      action := acfree; //窗体释放;
    destory里要写
      form2 := nil;//让它在内存中消失
      

  4.   

    if not nill(form) then 
      form.show
    else
      begin 
        form:=tform.Create(self);
        form.show 
      end;
      

  5.   

    假设主窗口为 Form1, 子窗口为 Form2,则有:if not Assigned(Form2) then
       Form2 := TForm2.Create(Self);
    Form2.Show;
    BringWindowToTop(Form2.Handle);  // 放到最前面来试试?