最近我在做一个程序,遇到一个关于MDI窗口的问题:
 有一个登录窗体(frm_Login),经过按扭调出MDI父窗口(frm_Main);
 然后在frm_Main上有一个按扭生成一个子窗口,但是好像出问题了,我查
 了以前的贴子,好像没有人回答这个问题,它弹出的错误提示是:
  " Cannot Creat form,No MDI forms are currently active"
   不知有何解决办法?

解决方案 »

  1.   

    你不能把frm_login 作为MainForm,要把那个MDI主窗口作为MainForm才行
      

  2.   

    你不能把frm_login 作为MainForm,要把那个MDI主窗口作为MainForm才行
      

  3.   

    很简单啊。你把frm_login不要设置为子窗体,改为标准窗体就是了。
      

  4.   

    loginfm 普通窗体,手动创建
    MDImainfm MDI窗体,自动创建
      

  5.   

    但是这样之后,我进入主窗体在调用其他子窗体就会出现上面的错误了啊,说没有活动的MDI窗体
      

  6.   

    我以前也遇到过这样的问题,还是请教kingron才找到解决方法:我们知道,在Delphi中,如果一个MDI Form非主窗体的话,我们就不能创建任何MDI Child Form,实在是遗憾,不过还是可以解决的。Kingron查看了VCL的源代码,发现在创建窗体的时候,系统会检测MainForm是不是nil和MainForm.ClientHandle是不是nil,对于MainForm就是MDI Form的,因为有ClientHandle,所以没有问题,但是对于非MDI的主窗体,其ClientHandle为nil,因此出现错误。知道原因之后,就好办了,因此我们只要把MainForm.ClientHandle修改称自己的MDI Form的ClientHandle即可,要做这个工作,非指针莫属了!!!在你的MDI MainForm的创建子窗体的代码中改成类似的即可。我测试通过,不过是否有什么后遗症之类,我就无法保证了,还有错误,请来信告知。varpHandle:^THandle;beginpHandle :[email protected];pHandle^:=ClientHandle; ///关键在这一句!with Tform3.Create(Application) do show;end;