Visual Basic 语 言 程 序 设 计第 14章 对象的链接与嵌入
对象链接与嵌入控件 OLE(Object Linking and
Embedding),可以使 VB应用程序访问 Windows
环境中其他应用程序的对象,从而使 VB能够使用其他应用程序的数据。例如 Word文档、
Excel工作表等,这类对象称为 OLE对象。 VB能够访问的 OLE对象取决于用户系统所安装的
Windows的应用程序。 OLE对象可以通过 VB工具箱中提供的 OLE控件进行加载。
Visual Basic 语 言 程 序 设 计
14.1 OLE控件概述
OLE控件处于工具箱中,它的作用是在 VB应用程序中插入 OLE对象,
就像一个容器一样,所以又称它为 OLE容器控件。
使用 OLE控件,可以进行如下应用:
(1)在应用程序中,为对象创建一个占位符。运行时创建出现在 OLE
容器控件中的对象,或者改变已在设计时置于 OLE容器控件中的对象。
(2)在应用程序中,创建链接对象。
(3)把 OLE容器控件与数据库绑定。
(4)如果在 OLE容器控件中移动、调整对象大小或者更新对象,那么执行相应的操作。
(5)从复制到剪贴板上的数据中创建对象。
Visual Basic 语 言 程 序 设 计
14.1.1 使用 OLE控件
使用 OLE控件插入对象,既可以是对象链接,也可以是对象嵌入。
而且在 OLE控件中所插入的对象,既可以插入整个文件,也可以插入文件的部分内容。
在窗体上添加一个 OLE控件,与其他控件不同的是,此时会弹出一个,插入对象,对话框,如图 14.1所示,此对话框给出了所有 OLE
对象类型。我们也可以通过双击 OLE控件,弹出一个,插入对象,
对话框,或激活 OLE控件,右击鼠标,屏幕出现快捷菜单,如图
14.2所示,选中,插入对象,命令,屏幕显示,插入对象,对话框。
在,插入对象,对话框中,有几个可供选用的单选按钮、命令按钮和复选框,先说明其作用。
Visual Basic 语 言 程 序 设 计单选按钮、命令按钮和复选框的作用,
(1)“新建,单选按钮:为缺省按钮。如果原来没有准备好要嵌入的对象,就需要选择,新建,。 VB就会立即启动用户在,对象类型,中选择的应用程序,在应用程序中创建所需的对象。例如,若在,对象类型,中,选择了
,Microsoft Word文档,,VB就会启动 Word,然后在 Word中建立一个新文档作为 OLE对象,用户可以在其中输入文档内容。
(2)“从文件创建,单选按钮:如果用户已经建立了要嵌入的对象,则应选择此单选按钮 (此时单选按钮左侧的圆圈内有一个黑点 ),屏幕上会立即显示出如图
14.3所示的对话框,可以在,文件,框中,输入所要嵌入的对象。
(3)“浏览,命令按钮:单击,浏览,按钮,屏幕会出现浏览窗口,此时用户可以从中选择要插入的对象。如果选中了,链接,选项,则表示对象的插入方式是链接方式,否则是嵌入方式。
(4)“显示为图标,复选框:如果选择它,插入到 OLE控件中的对象是以图标的方式显示。此时,,插入对象,对话框出现了,更改图标,按钮,用户可以通过单击它来更改图标。
【 例 14.1】 在 OLE控件中,插入一个 Word文档的全部内容。
【 例 14.2】 将一个文件的部分内容插入到 OLE控件中。
Visual Basic 语 言 程 序 设 计
14.1.2 对象链接与嵌入的区别
链接与嵌入的不同之处在于插入到 OLE控件的对象 (数据 )所存放的位置。
例如,当把一个 Word文档链接到 VB应用程序时,VB是将 Word文档的指针
(即地址 )插入而不是对象本身。对象本身仍然由创建它的 Word应用程序管理,存储在 OLE控件之外。在调用该文档时根据该地址去访问被链接的
Word文档。如果 Word文档数据源中的数据发生变化时,应用程序所调用的数据也随之变化,如果数据源移动了位置、更改了名称或遭到了破坏,
在 VB应用程序中都将不能正确调用它。当我们将一个 Word文档嵌入到 VB
应用程序中时,VB是将 Word文档本身插入到应用程序中,并将该 Word随
VB应用程序一起存储。其他的程序是不允许访问被嵌入对象的。
可见,链接与嵌入各有优缺点。嵌入到 OLE控件中的数据不会丢失,但它是以占用更多的空间为代价的。链接到 OLE控件中的数据虽然占用较少的空间,但是数据源容易受外界的影响而丢失。
Visual Basic 语 言 程 序 设 计
14.2 OLE控件常用属性与方法
14.2.1 OLE控件的属性
1.OLE容器控件的常用属性
(1)Action属性
该属性设置一个值,用来通知系统进行何种操作。此属性只能在程序中使用,在设计阶段不可用。 Action属性共有 14个值可供选择,含义如下:
Visual Basic 语 言 程 序 设 计
Action属性 14个值的含义如下:
0:生成内嵌对象。
1:生成链接对象。
4:将对象的数据和属性复制到系统剪贴板。
5:将系统剪贴板中的数据粘贴到 OLE容器控件。
6:从应用程序中获取当前数据并修改 OLE容器控件的内容。
7:激活 OLE控件。
9:关闭 OLE对象。
10:删除 OLE对象。
11:将对象保存到数据文件中。
12:加载保存到数据文件中的 OLE对象。
14:显示,插入对象,对话框。
15:显示,特殊粘贴,对话框。
17:更新对象支持的谓词列表。
18:将对象以 OLEVersion1.0版本的文件格式保存。
Visual Basic 语 言 程 序 设 计
(2)AppIsRunning属性
该属性表示源应用程序是否正在运行。设为
True时,源应用程序在运行,设为 False时,
关闭源应用程序。这种方法可以使对象激活的更快。通常在对象失去焦点时,可以将这个属性设为 False来关闭源应用程序。
Visual Basic 语 言 程 序 设 计
(3)AutoActivate属性
该属性用来确定对象激活的方式。取值及含义如下:
0:手工激活。对象不能自动激活,要使用 DoVerb方法来激活对象。
1:焦点激活。如果对象不支持单击激活,那么 OLE容器控件接收到焦点时激活源应用程序。
2,(缺省 )双击激活。当 OLE容器控件拥有焦点时,如果双击 OLE容器控件或者按回车键,那么激活源应用程序。这种情况下双击 OLE容器控件不会产生
DblClick事件。
3:自动激活。当 OLE容器控件拥有焦点或者双击控件时,将根据对象的激活方法来激活源应用程序。
(4)Class属性
该属性确定在 OLE控件中插入的对象的类。
在,属性,窗口中,选中该属性,单击其右侧出现的按钮,则打开,选定类,对话框,如图 14.9所示,其中列出了系统中可用的类名。选定其中要插入的对象,按
,确定,按钮。也可以用代码的方式为 Class属性赋值。
例如,要插入 Word文档,需要指定类名为 Word.Docment.8。若要插入 Excel工作表,则需要指定类名为 Excel.Sheet.8。
Visual Basic 语 言 程 序 设 计
(5)DisplayType属性
该属性确定对象在 OLE控件中的显示方式。
取值为 0表示显示对象的内容。
取值为 1表示显示对象的图标。
Visual Basic 语 言 程 序 设 计
(6)OLETypeAllowed属性
该属性确定 OLE控件所能支持的对象的插入方式。
值为 0表示链接。
值为 1表示嵌入。
值为 2表示链接与嵌入两者都可以。
Visual Basic 语 言 程 序 设 计
(7)SizeMode属性
该属性确定 OLE控件如何显示对象,其取值及含义如下:
0:表示按对象的实际尺寸显示,超出 OLE控件的部分被截取掉。
1:表示对象自动调整大小以适合 OLE控件。
2:表示 OLE控件自动调整大小以适合插入的对象。
3:表示按原有比例自动调整大小。
Visual Basic 语 言 程 序 设 计
(8)SourceDoc属性
该属性用来设置或返回插入对象的文件名。
Visual Basic 语 言 程 序 设 计
2.OLE容器控件的常用方法
(1)CreatLink和 CreatEmbed方法:
可以实现在程序运行时以链接方式插入对象或以嵌入方式插入对象。
(2)DoVerb方法
格式:对象,DoVerb(verb)
功能:运行时,可以用 DoVerb方法来激活对象。
说明,verb:表示参数,是 OLE容器控件内要执行的对象的谓词,
标准谓词值及其含义为:
0:对象的缺省动作。
1:激活对象进行编辑。如果源应用程序支持在位激活,那么对象在
OLE容器内激活。
2:在独立的源应用程序窗口中打开对象。如果源应用程序支持在位激活,那么对象在自己的窗口中激活。
Visual Basic 语 言 程 序 设 计
3:对于嵌入对象隐藏创建对象的源应用程序。
4:如果对象支持在位激活,那么在位激活对象并显示所有的用户界面工具。如果对象不支持在位激活,那么不激活对象,并产生一个错误。
5:如果将焦点移到 OLE容器控件中,那么为对象创建一个窗口,
并为对象作编辑的准备;如果对象不支持单击鼠标的激活,那么产生一个错误。
6:当激活对象进行编辑时,放弃所有改变。这些改变可以由源应用程序撤消。
(3)InsertOBjDlg与 PasteSpecialDlg方法
可以调用 InsertOBjDlg方法显示,插入对象,对话框,
而调用 PasteSpecialDlg方法将显示,选择性粘贴,对话框。在显示对话框时,可以用 OLEType属性确定 OLE容器控件是否包含链接对象、嵌入对象或者没有对象。
【 例 14.3】 在运行时插入对象。要求在程序运行时,
用户可以通过单击按钮分别以嵌入和链接方式插入
Word文档,并可以激活编辑或进行删除操作。
Visual Basic 语 言 程 序 设 计
14.2.2 编辑 OLE对象
无论在设计阶段还是在运行阶段都可以随时对 OLE对象进行编辑。
在设计阶段,如果要编辑 OLE对象,将 OLE控件激活,
单击鼠标右键,就会弹出如图 14.2所示的快捷菜单。
根据需要,进行选项。
在运行阶段,如果要编辑 OLE对象,同样将 OLE控件激活,单击鼠标右键,屏幕会立即弹出一个如图 14.13
所示的 Word主窗口,用户可以进行编辑操作。