这个问题我也出现过,
现在已解决,
不过用的什么办法我一下子想不起来了,
让我想想,
好象是DLL和EXE中有样同的东西,
但在两个地方版本不一样造成的!

解决方案 »

  1.   

    继承?我只是用这样的方法
    procedure EnterDllForm(AOwner:TComponent);stdcall;export;
    begin  
      with TFormDll.Create(AOwner) do
      begin
        Show;
      end;
    end;
    调用时:
    EnterDllForm(self);
    另外,我是静态调用DLL,在主程序启动时,错误就产生了。
      

  2.   

    你将所有工程产生的.dcu文件删除,然后Build All一下也许就可以了! 
      

  3.   

    试试以下方法:
    1、在exe先调用CoInitialize(nil)
    2、在exe中建立ADO连接,传递到dll
      

  4.   

    我肯定你一定是在不同的地方有同一个.pas文件的拷贝!
    建议你将所有的公式文件放在同一个目录下,以免有不同的版本!
      

  5.   

    你可以uses activex
    然后调用一下coInitalize试试
      

  6.   

    to:hellion(恶人):
      问题又解决啦。我在Project文件中uses ActiveX
      然后
      Application.Initialize;
      CoInitialize(nil);
      Application.CreateForm(TForm1, Form1);
      Application.Run;
      就一切OK。谢谢恶人。to:liang_z(千山一刀之忍者神龟) 
      谢谢千山。
      

  7.   

    绝对不用调用coInitalize!
    而且你跟本就不知道在什么时候,什么地方去调用,
    我以前也有这个问题,我记得就是版本不一至造成的!
      

  8.   

    to:liang_z(千山一刀之忍者神龟) 
      我在Project文件中uses ActiveX
      然后
      Application.Initialize;
      CoInitialize(nil);
      Application.CreateForm(TForm1, Form1);
      Application.Run;
      就一切OK。程序运行很正常呵。
      千山,你试试看?
      

  9.   

    TO:念雪
      你不要去用ActiveX,和CoInitialize(nil);
      我现在确信是版本不一至!如果你用这种方法解决的话以后可能还会就错!
      除非你的问题是因为用了一些第三方开发的ActiveX控件,如Excel、Word等!
      相信我,不用调用CoInitialize(nil)!
      

  10.   

    这个问题完全可以在你的父窗口创建子窗口前调用一次coInitalize(nil),我也刚刚遇到。
    但是在Dll里面引出窗体,还有好多问题,例如说:我的MDI子窗口上自己写的控件用到了VCL定义的消息:CM_MOUSEENTER,CM_MOUSELEAVE,放入DLL中就不会响应这个消息了!奇怪!
    我还不太清楚你的问题怎么解决的,但是你可以查看一下打开MDI子窗口后,MDI父窗口的MDIChildCount是否为0,如果为0可能你会出很多问题的。
    有问题我们继续讨论,最近做这个东西我还遇到其他一些问题!
      

  11.   

    liang_z(千山一刀之忍者神龟):或许你的有道理,说实话,这儿为什么调用CoInitalize(nil)我还没有搞清楚!虽然我也是调用以后就正确了!我还想问问大家,我刚大概看了相关的两个帖子,为什么要“带包编译”,有什么区别吗?(我只知道是是否把相关包的东西编译到可执行程序中,就可以脱离Delphi环境运行)
    因为我刚刚测试了一下,带包编译以后,我再MDI子窗口中映射的VCL自定义的消息:CM_MouseEnter和CM_MOuseLeave可以响应了!!!
    我越来越糊涂了@_@   #$%#^$&%^*&^*^&(     呵呵,各位老大,继续讨论!
      

  12.   

    我又测试了我自己的,带包编译后,我这儿不要CoInitialize(nil)也不会出现“未调用coInitalize”的错误了!呵呵.....真是爽!
      

  13.   

    你爽的还是后面,MDIChildCount<>0了!
      

  14.   

    呵呵,何谓天机!?
    带包编译Delphi做了什么手脚!应该说,带包编译后导出的MDI窗口就和普通使用没有区别。而且我看了一下,在动态库内的Application就是主窗口的Application了,估计Screen也是一样了(才能对MDIChild计数)。
    but why???
    如果要分,没问题,我尽力而为之,给你加分!