现在有一个应用,在一个formstyle为normal的窗体上点一个按钮,显示一个MDI主窗体
(可以直接show,也可以动态create之后show),在这个窗体中新建MDI子窗体时总是出错提示‘Cant Create Form. No MDI Forms are currently active’;而如果直接把这个MDI主窗口设为应用的主窗口,就可以正确的打开新的MDI Child了,这是为什么啊?

解决方案 »

  1.   

    在创建MDI子窗体前要创建MDI主窗体, 在你所谓的主窗体中已经显示了MDI主窗体,你可以在MDI主窗体中创建一个函数来创建MDI子窗体,  这样可以在你所谓的主窗体中调用这个函数来创建MDI子
      

  2.   

    我不是要在非MDI主窗体中打开一个MDI子窗体,可能是我没说明白
    举个例子:
    现在有一个正常的MDI应用,MDIMain可以通过菜单新建MDIChild,这我可以做到现在我在这个应用中加一个初始窗口,按按钮显示上面的那个MDI主窗口,这样我的程序在MDI中就不能新建MDIchild了
      

  3.   

    我的前提是其他窗体先打开,且在MDIMain显示时没有关闭哪位大侠试一试我的例子吧,看看结果是不是和我一样
      

  4.   

    我做过了,不知道可不可以,首先要保证你的mdi窗体在显示时没有子窗体弹出,也就是说在option中的auto create form中没有子窗体,main form 为非子窗体,这样就可以从非子窗体启动,并可以通过利用application.createform(tfrmmdi,mdi);来调用mdi窗体了。
      

  5.   

    类似的情况我也遇到过,当时做了一个导航窗体(MainForm),通过此窗体调用一个MDI主窗体,再通过MDI主窗体调用若干MDI子窗体.编译可以过,运行也是出现类似的错误提示,应该是Delphi的BUG,PB写的程序就不会出现这样的问题.注:现在商业软件中用导航窗体+MDI主窗体+MDI子窗体的模式用流行,但我还没见过用Delphi做的,基本都是PB做的.
      

  6.   

    to:: hlddg(hlddg)  你说的这些步骤我都可以做到,但现在你值显示了MDIMainForm从MDIMainForm在新建一个MDIChlidForm就出错了to:13825075556(小虎) 
    看来这个问题真的不能解决了,thx
      

  7.   

    楼主:
    你可以考虑在主MDI窗体的OnCreate事件中动态创建这个导航的窗体。
      

  8.   

    to: fancier(OP&&(C/C++)) 如果这个导航窗体的功能是可以调用多个MDIMain窗体,就没法做了