form 上放几个button :每个button 的事件都是创建并打开一个窗体:
这些窗体为动态创建,且方法都相同:这些窗体在并都已经将visible设了false
如下
var form32:tform32;
begin
  form32:=tform32.create(self);
  form32.visible:=false;
   form32.showmodal;
end
现在问题是;有的当点有的按时出现:  cannt  make a visible window modal  而有的则没有出现过
今天下在另一台机子上运行正常,便是换一台机子后,又有一个button点的出现上述错误
每当出现这个问题时,都没法解决 ,只有新建一个 form ,然后将原来 form 上的东西及代码拷过去
,不知那个大侠出手救命

解决方案 »

  1.   

    form32.visible:=false; 这一句本身就是多余的。
    在form32:=tform32.create(self);之后,form32.Visible就是False。
      

  2.   

    把form32.visible:=false去掉
    要是form32不是很重要的话,把form32.showmodal改为form32.show
    因为用showmodal显示出来的窗体是独占前台的,这样会使得后面的窗体不工作,show就不会
      

  3.   

    统一楼上的,刚才我也遇到这么个问题,看他的提示很明白,不能把一个可见的窗口showmedal,我的是同一个窗口有的地方用show来显示的,有的地方使用showmodal来显示的,当我show了之后,在showmodal的时候就会出现上面的错误提示了。
      

  4.   

    为什么刚刚解决自己的问题,上网来就能看到相同的问题要我解决阿,哈哈,难道God要送分给我???
      

  5.   

    form32.showmodal-> form32.show
      

  6.   

    var form32:tform32;
    begin
      form32:=tform32.create(self);
      form32.visible:=false;
       form32.showmodal;
      form32.release; //增加
    end
      

  7.   

    form32.visible:=true;
      form32.showmodal;这样才抱错  form32.visible:=false;
      form32.showmodal;这样没错的
    因为showmodal里一开始就进行了判断function TCustomForm.ShowModal: Integer;
    var
      ……
    begin
      CancelDrag;
      if Visible or not Enabled or (fsModal in FFormState) or (FormStyle = fsMDIChild) then
        raise EInvalidOperation.Create(SCannotShowModal); 所以以上四种状态,不允许ShowModal
      

  8.   

    出现这种错误肯定是搂住在什么其他地方把form32,show出来过。不然的话,这种情况是不会提示错误的。
      

  9.   

    去掉 
    form32.visible:=false;
    在 form332 的 Create 事件里面,隐藏。用完之后,记得 Free