主程序中的主窗体设置为MDIForm,但是创建BPL中的MDIChild窗体时报错:“NO MDI forms are currently active”,貌似没有自动关联主程序中的MDI父窗体,初学BPL调用,求教如何解决?

解决方案 »

  1.   

    BPL这个技术建议不要用,直接把程序编译成一个EXE,这样比较稳定。
      

  2.   

    尽量不要用bpl。用了你就知道的。
      

  3.   

    想使用BPL,是以后修改更新方便些,不需要更新整个EXE,而且全部编译到EXE中,文件比较大。如果采用DLL来分割模块,个人觉得接口函数容易泄漏,如果熟悉软件了可以自己写个EXE调用DLL就能开发出相同功能的软件了。哪位高手指点一下,为何会报这个错。主程序中的MDI父窗体肯定是先创建了的,解决这个问题我基本就可以顺利调用BPL中的功能模块了。各位帮帮忙
      

  4.   

    相关代码如下:
    procedure EnterForm(MainApp: TApplication; ID: integer; ModNo: string; vParam: string = ''); stdcall;
    begin
      case ID of
        101:begin
          if frmWare=nil then
          begin
            Application.CreateForm(TfrmWare,frmWare);
            frmware.EnterForm;
          end
          else
            frmWare.BringToFront;
        end;  end;
    end;procedure TfrmWare.EnterForm;
    begin
      self.FormStyle:=fsMDIChild;
      self.WindowState:=wsMaximized;
      show;
    end;执行到show这一行报错:“Cannot create form.NO MDI forms are currently active”
    如果将formstyle设置为fsNormal,能正常调用
      

  5.   

    主程序中的窗体设置为fsMDIform,BPL中没有父窗体,这样行不通吗?