比较链接对象与嵌入对象

通过把数据链接或嵌入 Visual Basic 应用程序,用部件的可视界面包含来自另一个应用程序的数据。链接的和嵌入的对象之间的主要区别是:储存数据的地方不同。例如,与链接对象相关的数据是由创建它的应用程序管理,而存储在 OLE 容器控件之外。与嵌入对象相关的数据包含在 OLE 容器控件中,并可与 Visual Basic 应用程序一起存储。

当创建链接或嵌入的对象时,它包含提供该对象的应用程序的名称、数据(或,在链接对象的情况下,对该数据的引用)和数据的图象。

注意 为了把一个对象放在 OLE 容器控件中,提供对象的部件必须已在系统注册过。若某应用程序提供用于工程中的对象,当安装它时,应当在系统上注册其对象库,使应用程序对象出现在“插入对象”对话框中。可以通过使用 Regedit.exe 搜寻系统注册簿来寻找对象,但是注意不要改变注册簿的内容。

链接的对象

链接一个对象时,实际上是在应用程序中插入链接对象的占位符(并非实际数据本身)。例如,当把电子数据表单元的范围与 Visual Basic 应用程序链接时,与该单元相关的数据是存储在另一文件中的;在 OLE 容器控件中,只存储数据的链路和数据的图象。在使用 Visual Basic 应用程序时,用户可以激活链接对象(例如,双击对象),电子数据表应用程序便自动启动。然后用户可以使用电子数据表应用程序来编辑那些电子数据表单元。当编辑一个链接对象时,编辑操作是在 OLE 容器控件外的单独窗口中完成的。

当对象与 Visual Basic 应用程序链接时,可以从其它的、包含那个数据链路的应用程序中查看对象的当前数据。数据仅存在于一个地方—ActiveX 部件—就是提供对象的源应用程序。例如,在图 10.8 中,Visual Basic 包含 Graph 应用程序的链路。Microsoft Word 也包含这个 Graph 应用程序的链路。如果图表的数据被随便哪个应用程序改变,改变了的图表将在 Visual Basic 应用程序和 Microsoft Word 文档中都出现。

图 10.8 对象的数据可以从包含该数据链路的许多不同的应用程序中访问

正如所见的那样,链接使跟踪出现在多于一个的应用程序中的相同信息变简单了。当要维护几个应用程序都可访问的一组数据时,链接是有效的手段

嵌入的对象

要创建一个嵌入对象,可以使用 OLE 容器控件,也可以把一个对象的类加入工具箱。使用嵌入的对象,与对象相关的全部数据都将被复制和纳入 OLE 容器控件。当把控件的内容存入文件时,该文件含有创建对象的应用程序名称、对象数据和对象的元文件图象。由于这个原因,嵌入对象可能会大大增加文件的大小。

与链接对象不同,其它应用程序不能访问嵌入对象中的数据。当想要应用程序保持在另一应用程序中创建和编辑的数据,嵌入是有效的手段,如图 10.9 所示。

图 10.9 应用程序保持嵌入的对象的数据

当用户激活对象 (graph) 时,创建该对象 (Microsoft Graph) 的 ActiveX 部件被容器应用程序(Visual Basic应用程序)所调用,该对象的数据被打开和编辑。另外,还在容器应用程序中显示对象的用户界面和菜单系统,使用户能现场控制对象。关于现场激活的详细信息,参阅本章后面的“激活 OLE 容器控件中的对象”。