1.如果你要传递的是mainface的话
从字面意思上看是mainform你懂我的意思吗
如果不是则利用screen.form来寻找
2.你dock时最好有一个panel这样便于控制大小
不要先show先manualdock在panel上
然后调用主窗口的show方法

解决方案 »

  1.   

    1)TFormMainFace 也被写在了一个DLL中。它的原型是
    procedure EnterMainFace(AOwner:TComponent;);stdcall;export;
    begin
      with TFormMainFace.Create do
      begin
        Show;
        //我这样写的,但是不知道如何取得TFormMainFace.Create 的结果。
        //我的问题其实就是这个。
      end;
    end;
    2)如果我先manualdock然后才show的话,窗口的内容显示不出来。我向PageControl
      Dock时是这样的。我需要用Dock窗口显示一些附加的公共信息,所以不能用Panel.
      

  2.   

    还是可以
    1。你只要把aowner定义为appplication
    就可以用screen找到它
    2。如果实在要用pagecontrol的话
    那也应该可以呀
    你可以试试把dockform.bringtofront
      

  3.   

    to: Focus(老鱼)
        1)我知道可以。但是,这不是我想要的。比如,我把Application作为AOwner传递
    给EnterInterface,假设我把这个TDllForm从PageControl中释放出来,然后关闭、释放
    PageControl所在的窗口TFormMainFace.Create,结果,TDllForm那个窗口仍然存在,
    因为它是从Application中创建的,Application存在,它就不会随TFormMainFace.Create
    的实例一起释放。
       如果要释放,只好用代码的方式。但是如果我能把TFormMainFace.Create传递进去,
    那就达到目的了。我想知道在
    procedure EnterMainFace(AOwner:TComponent;);stdcall;export;
    begin
      with TFormMainFace.Create do
      begin
        Show;
      end;
    end;
    之后,如何得到TFormMainFace.Create 的内容。
    2)我再试试。    
      

  4.   

    “假设我把这个TDllForm从PageControl中释放出来,”
    应该是
    “假设我把这个TDllForm从PageControl中undock出来,”
      

  5.   

    只有undock当然还会存在
    application只是一个handle
    它只负责在自己destory时把所有owner是自己的全部释放掉
    with TFormMainFace.Create(aowner)
    加上aowner
      

  6.   

    对呵,老鱼,我的意思是如何得到
    procedure EnterMainFace(AOwner:TComponent;);stdcall;export;
    begin
      with TFormMainFace.Create do
      begin
        Show;
      end;
    end;
    所产生的TFormMainFace.Create .
      

  7.   

    这样,我就可以让TFormMainFace来自动销毁DockForm。
      

  8.   

    我明白了很简单
    你可先测试一下dockform的parent是什么
    然后重新给值
      

  9.   

    还有,使用ManualDock不会产生OnEndDock时间。