代码之家  ›  专栏  ›  技术社区  ›  Jamo

在自己的应用程序中可视化地包含另一个应用程序

  •  2
  • Jamo  · 技术社区  · 16 年前

    我用Delphi(Win32)编写了四个小的单窗体实用程序,每隔一段时间我都想用一种让它们“感觉”好像它们都是一个应用程序的方式来使用,主要是让它们之间的切换非常容易。例如,能够将它们作为容器插入到选项卡表中,或者沿着这些行插入其他内容,这将是非常好的。

    AppControls制作了一个简洁的小组件,它与tform子代执行类似的操作,允许它们插入到Delphi应用程序的另一个容器中(请参见acembeddedform http://www.appcontrols.com/appcontrols/overview.html'>此处),但我看不到对四个单独的应用程序执行此操作的任何方法,除非我构建第五个a应用程序的最终结果是,并编译在所有形式的原始四个应用程序。

    我还可以想象想要“包含”或嵌入其他应用程序(例如,记事本)。

    这在德尔福是可能的吗?(一切皆有可能………如果是这样,这会是非常困难的,并且需要大量的底层WindowsAPI熟悉性吗?

    我认为这些问题的答案可能是肯定的,也可能是肯定的,但希望答案是肯定的,也可能是否定的。我想我只是想确定一下。& gt;


    如果我是从编程的角度来梦想的话,这比它的价值要大得多;有没有任何关于实用程序的建议,可以使在三个或四个应用程序的标准集之间来回切换比在Windows中通常简单?

    5 回复  |  直到 16 年前
        1
  •  3
  •   Community CDub    8 年前

    这另一个 SO question 可以提供一些提示。基本上它说明你使用 SetParent . 您还可以使用 FindWindow 并调用setparent对它们进行自己的重新设置。

        2
  •  5
  •   mghie    16 年前

    您可以将您的小应用程序制作成OLE服务器,并创建一个新的应用程序,以一种主要形式承载它们。OLE被Delphi很好地支持,所以它应该是相当容易的,并且不需要太多的API修饰。

        3
  •  1
  •   Tim Sullivan    16 年前

    关于嵌入你无法控制的程序:我怀疑你在尝试去做你所描述的事情时会遇到很多麻烦,如果可能的话(我怀疑的是),它将依赖于大量低级的API调用和普遍的污秽。

    如果你想对你的应用程序进行一些重组,你可以把你的四个程序做成插件,然后创建第五个“主机”应用程序来加载它们中的任何一个或全部。

    我建议你看看绝地插件系统,免费提供 http://delphi-jedi.org .

        4
  •  1
  •   mj2008    16 年前

    当我将一些内部应用程序组合成一个带有标签的应用程序来在它们之间进行选择时,我采用了“生成第五个应用程序”的解决方案。

    frmShipRef := TfrmShipRef.Create(self);
    frmShipRef.Parent := tabShipRef;
    frmShipRef.BorderStyle := bsNone;
    frmShipRef.Align := alClient;
    frmShipRef.Show;
    

    我刚刚设置了一个带有选项卡的新表单,然后用上面的代码创建了其他表单。这已经很好地工作了,通过一点条件编译,我可以在左侧添加一个面板,它提供了一种“元复制和粘贴”来允许它们在自己之间传递数据。

        5
  •  0
  •   Bob S    16 年前

    由于您的所有其他应用程序都是单一表单,因此您可以将每个应用程序中的所有组件剪切/粘贴/保存到另存为 Component Template . 然后您可以将组件模板加载到它自己的pagecontrol/tab中。

    推荐文章