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主窗口,用户可以进行编辑操作。
对象链接与嵌入控件 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主窗口,用户可以进行编辑操作。