我作了一个 查询的DLL 包含查询窗体的我在主程序中调用这个 DLL中的窗体 我应该怎么作?
能写个例子吗?或做个demo[email protected]

解决方案 »

  1.   

    在所有线程当中加上
      CoInitializeEx(Nil,COINIT_MULTITHREADED);
      CoUninitialize;
    配对.
    例如:...
    type
      TMyThread = class(TThread)
        protected
          procedure Execute;override;
      end;implementation
    uses
      Activex;procedure TMyThread.Execute;
    begin
      CoInitializeEx(Nil,COINIT_MULTITHREADED);
      try
        while Not Terminated do
          begin
            //这里调用相关DLL函数
           end;
      finally
        CoUninitialize;
      end;
    end;
      

  2.   


    initialization
      CoInitialize(nil);
    finalization
      CoUnInitialize;
    在DLL中ADO所以单元最下面加上上面代码即可。
      

  3.   

    To 2楼,注意MSDN(http://msdn.microsoft.com/en-us/library/ms695279(VS.85).aspx)下面这段话,其它的我就不多说了.
    Because there is no way to control the order in which in-process servers are loaded or unloaded, do not call CoInitialize, CoInitializeEx, or CoUninitialize from the DllMain function. 
      

  4.   

    to :unsigned 我现在不明白的是  我是在一个主程序中的botton中执行 dll中的 
    procedure TF_main.N8Click(Sender: TObject);
    begin
      SynAPP(Application.Handle);//DLL中的函数
      ShowForm;                 //DLL中的函数 打开DLL中的一个 form
      
    end;//////////////////////////////
    DLL中 在form create时  有个遍历数据  初始化form中的一个 treeview的数据库操作 //////////////////////////////////////////////////////////////那么我在主程序中 N8Click  应该怎么写那 ?
      

  5.   

    题外话,建议你传ADOConnection进去,调用和普通的DLL调用是没什么区别。
      

  6.   

    可以有很多种方式,比如DLL当中第一个被调用的函数返回一个TForm
    var
      frmDLL: TForm;
    begin
      frmDLL :=DLL_CreateForm(Application.Handle);
      if frmDLL=Nil then Exit;
      try
        frmDLL.ShowModule;
      finally
        frmDLL.Free;
      end;
    end;
      

  7.   

    现在的问题是 如果ShowForm中没有ado的话 是没有问题的
    有ado 就报错大家都说用
      CoInitializeEx(Nil,COINIT_MULTITHREADED); 
      CoUninitialize; 但是我不清楚应该在那里加
    调用dll函数时应该怎么写 郁闷了
      

  8.   

      其实用不着这么急眼的.没觉得别人指手画脚啊,楼主过于敏感了.人都是平等的,但水平不是平等的,
    大家都是想帮你,有的是直接告诉你答案,有的只是想告诉人学习的方法,望楼主能理解.
      在说大家也不知道你的水平,你知道些啥不知道些啥,只是按各自的理解给你了一些他自己的想法和
    建议,可能不太符合你想要的,也可能让你觉得伤了自尊心,就让你觉得烦人了.问题是如果这个世界
    人都没有人愿意去"烦"你,不知道你是不是会觉得过的更好.有自尊心是好的,但也不能太过了,要区分
    事情,过分的自尊心给人的感觉就是自卑,害怕别人说自己的一点不好,总是能听到别人话中带话的贬低
    自己.刚开始学计算机的时候,连路径的问题也搞不明白,到机房玩游戏,问人家红警在那里,怎么进去.别
    人头也不抬的说一声C盘GAME下,自己都不知怎么去这个地方.将别人敲的字符一个个记下来试来试去才明
    白什么盘符啊,命令,执行文件什么,当时没觉得别人有啥不对啊.可能是太想玩游戏了,对别的事情都不在意.至于你的那个问题,在上面各位热心的朋友的帮助下,也应该解决了吧.
    其实我才是最烦人的了.