不知道这个问题这样描述对不对?
通常我们在主程序调用动态库中的窗体只能用show 或showmodal 这样的方法?
能不能在主程序中放个控件,然后调用dll时将其中的窗体映射上来?
类似于在资源管理器的右边窗体中既可以显示文件又可以打开word文档?

解决方案 »

  1.   

    在Dll中设置一个image里面存放窗体图片。调用的时候先调用取得那个图片。
      

  2.   

    你是说把DLL中的窗体停靠在主窗体的控件(比较Panel)中吗。
      

  3.   

    不是很明白楼主的想法。
    “类似于在资源管理器的右边窗体中既可以显示文件又可以打开word文档?”是什么意思?
      

  4.   

    在dll中的窗体中添加方法:
    procedure MyShow(fPanel: Tpanel)
    begin
      self.parent := fPanel;
      self.show;
    end;
    然后在调用这个MyShow
      

  5.   

    是这样的,我现在做的程序左边是菜单,右边是listview或者是datagrid,如果要调用dll中的form,就要在dll的入口函数中调用form的showmodal 或者show 方法。但是这样呢,我的程序就有两个form,一个主form,一个是调用的dll中的form。能不能有什么法子能够将这个dll中的form映射到主form中,这样就只有一个主form,而那个dll中的form就相当于一个控件而已。
      

  6.   

    那只要将DLL中的窗口设置成MDI模式,然后在主窗口中用MDI的方式打开这个窗口,这样其实也可以达到你所需要的效果。不过,打开DLL中的MID窗口的方法好像比较麻烦,我看过有成功的例子,但说实在的,我也不知道如何来实现。
      

  7.   

    我试过g961681(麻油) 的方法不行,
    MDI的方法我考虑过,但是不符合我的要求,
    因为这样可能会打开几个form,
    我这样考虑就是想做一个一次只能打开一个form,又不会出现新的窗体,
    觉得这样紧凑一点
      

  8.   

    <我这样考虑就是想做一个一次只能打开一个form,又不会出现新的窗体,>
    可以控制。判断当前的子窗体数量是否>1,并且不是需要的窗体,关闭所有子窗体。显示需要打开的子窗体。
    没有必要搞的太复杂了。