【发布时间】:2009-02-12 21:52:39
【问题描述】:
我正在使用 Delphi 开发 MDI 应用程序。
我想在我的应用程序的 MDI 子窗口中显示由其他应用程序(我也构建)生成的交互式视图。
当用户在我的应用程序中选择特定视图类型时,它将启动另一个应用程序的实例,该实例将生成一个或多个数据视图,显示在我的应用程序的 MDI 子窗口中。
我希望这很清楚。
【问题讨论】:
标签: delphi
我正在使用 Delphi 开发 MDI 应用程序。
我想在我的应用程序的 MDI 子窗口中显示由其他应用程序(我也构建)生成的交互式视图。
当用户在我的应用程序中选择特定视图类型时,它将启动另一个应用程序的实例,该实例将生成一个或多个数据视图,显示在我的应用程序的 MDI 子窗口中。
我希望这很清楚。
【问题讨论】:
标签: delphi
您可以生成另一个应用程序,获取与该进程关联的窗口句柄,然后将该窗口句柄的父级设置为与您的 MDI 应用程序中的窗体或面板关联的句柄。
查看以下 Win32 函数...
您可能还需要...
【讨论】:
为什么不写一个 ActiveX 控件呢?它专为此类工作而设计(例如,考虑 Outlook 如何使用 Word 文本编辑器)。此外,通过这条路线,您的应用程序也可以与非 Delphi 应用程序进行交互。您将能够在 MDI 窗口中显示非 Delphi 应用程序,例如 Word 和 Excel,并且您的应用程序将能够在 Word 等非 Delphi ActiveX 主机中显示它们的内容。
【讨论】:
如果您想模块化您的应用程序,我认为最好使用 dll 来定义表单。
为此,您可以在 dll 或 dpk 中定义表单类,并在从应用程序加载它之后。
如果您使用的是 MDI 表单,我建议您使用普通的空 MDI 表单,并在去掉边框后显示您的 dll 表单,如下所示:
DllForm.FormStyle:=fsNormal;
DllForm.BorderStyle:=bsNone;
DllForm.Parent := MDIForm;
DllForm.Align := alClient;
您可以找到here 一篇关于从 dll 加载表单的文章。
【讨论】: