我从菜单命令中执行了A.ShowModal,在A中我用close关闭A,然后在A的OnClose事件中调用B.ShowModal并把A中的变量传到B中,但当我在B中再次想调用A.ShowModal时系统就出错了"Cannot make a visible window modal",我应怎样去再次调用A.ShowModal才不会出错呢?各位大哥请指点一下

解决方案 »

  1.   

    如果你是用的nomal窗体创建的A的话,只需要showmodal一次就行了,下次只用show就OK了
      

  2.   

    调用窗体A
      A:=TA.Create(Application);
      A.ShowModal;
      A.Free;调用窗体B
      B:=TB.Create(Application);
      B.ShowModal;
      B.Free;
      

  3.   

    最好分开写,对话框(窗体)分两种,一种是Modal Form(模式窗体),一种是非模式窗体
    showmodal是显示模式窗体时使用的,模式窗体会使程序在关闭对话框之前停止其他的活动,你再A的onclose里写B.showmodal,程序就会在这里等待,直到B结束才继续执行,再在B中写A.showmodal,这时A的onclose还没结束呢,A还存在,甚至还没从屏幕上消失,当然会提示“Cannot make a visible window modal”“不能使一个可见的窗体模式化(变成模式窗体)”
    你说对吗?欢迎指正
      

  4.   

    Form1 := TForm1.Create(Application);
    try
      Form1.ShowModal;
    finally
      Form1.Free;
    end;
      

  5.   

    to vavyboyleon(一天到晚加班的驴) :那我应该在哪个事件中调用B.showmodal才会使A完全处于关闭状态呢,而令到在B中再调用A.showmodal不会出现“Cannot make a visible window modal”“
      

  6.   

    我的意思是:你可以不使用模式窗体,和wwwwjjjj1978(风流小太狼)所说的基本一样,A.show而不是Showmodal