资源描述
OLE使得Visual Basic应用程序能访问Windows环境中其他应用程序的功能。前面所用的控件都是内置在Visual Basic中的,这些内置对象的出现在编辑器的工具栏中,可以把它们放到窗体上。但Windows环境中的有些对象不是Visual Basic所独有的,未放在Visual Basic中,而是由其他应用程序提供的,但可以在应用程序中使用这些对象。
Word文档就属于这种对象,可以将Word文档放在应用程序中,而不需要对其文件内容及组织方式有太多的了解。需要编辑Word文档时,可以暂时借用Word的菜单和工具条,将其显示在应用程序中;随后用户在应用程序中就象在用Word一样编辑文档。
要在Visual Basic中加入OLE功能,必须用OLE控件,以便将其他应用程序中的对象插入程序中。一次只能在OLE容器控件中放入一个对象,但统一窗体上可以含有多个OLE容器控件,各有自己的对象。
§1 设计时链接与嵌入
一、用拖放法嵌入对象
用拖放法嵌入对象的具体步骤如下:
1. 开始一个新的VB项目,并把OLE容器控件放在窗体上。
2. 在“插入对象”对话框中,单击“取消”钮,以便后面放置OLE对象。
3. 在OLE容器控件的属性窗口中,将SizeMode属性变为1-Stretch(对于可缩放图形)或2-AutoSize(对于不宜缩放的文本和图形),以调整对象或尺寸。SizeMode属性取值及含义如下表:
数值
说明
Clip
对象按实际大小,大于OLE容器控件的部分被剪切掉
Stretch
对象图形调整成OLE容器控件的大小,对象的缩放可能会使图形扭曲
AutoSize
OLE容器控件缩放以显示整个对象
Zoom
对象图形尽量调整成OLE容器控件的大小,但保持原有比例
4. 接着启动支持OLE的应用程序,如打开一篇Word文档文件,并选中其中一部分内容,以实现在OLE容器控件中嵌入Microsoft Word文档。
5. 在屏幕上同时显示Visual Basic和Word时(或用Alt+Tab切换),拖动文档或其一部分到空OLE容器控件中。
6. 拖动对象时,指针箭头下出现一个长方形,将其放到OLE容器控件中,于是 Word文档出现在OLE容器控件中,如上图所示。
二、OLE容器控件对象的常用属性
Class属性:产生对象的应用程序名,也是嵌入文档的类型。
SourceDoc:数据或引用的数据,即存入对象的文件名。
SourceItem:选作嵌入的文档部分(全文档时为空)。
OLETypeAllowed:源文档是链接还是嵌入到OLE容器控件中,这就取决于这个属性,它的具体取值如下:
数值
常量
说明
0
VbOLELinked
链接,OLE容器控件只能包含链接对象
1
VbOLEEmbedded
嵌入,OLE容器控件只能包含嵌入对象
2
VbOLEEither
LE容器控件可包含链接或嵌入对象
三、用“插入对象”对话框实现链接
用“插入对象”对话框实现链接,步骤的如下:
1. 开始一个新的VB项目,并把OLE容器控件放在窗体上。
2. 在“插入对象”对话框中,选择“由文件创建”选项并选定“链接”复选框。如下图中所示:
3.单击“浏览…”按钮,找到所需文件。
四、保存和获取对象
由于嵌入对象中的数据并不自动保存,要保存嵌入对象及服务器应用程序所做的修改,可用SaveToFile方法:
OLE1. SaveToFile filenumber
Filenumber对应二进制方式下打开的文件。
要装入存放成数据文件的对象,可用ReadFromFile方法。其语法如下:
OLE1.ReadFromFile filenumber
五、现场编辑
现场编辑也叫现场激活,它是Visual Basic中嵌入对象的增强功能。最简单的方法就是双击对象,这时应用程序的菜单和工具条可代替OLE容器控件的菜单和工具条。
§2 运行时链接与嵌入
本节通过一个实例介绍运行时实现链接与嵌入。该例子有两个窗体,界面如下;
左边为主窗口,右边窗口为单击主窗口中的Insert object... 按钮后出现的,右边窗口的作用是为动态嵌入的OLE容器控件设置SizeMode属性和OLETypeAllowed属性,即而装入“插入对象”对话框。下面先设计主窗口。
一、 主窗口的设计:
1. 开始一个新的VB项目,并把OLE容器控件放在窗体上。
2. 在“插入对象”对话框中,单击Cancel钮,以便后面放置OLE对象,并按上面左图调整OLE控件的大小。
3. 按上面左主窗口图依次添加三个按钮,Caption属性分别为insert object... 、object info.. 、close 。
4. 先给标为insert object...的按钮添加代码:
Private Sub Command1_Click()
frmtype.Show
End Sub
Frmtype为上图右边窗体的名字。再给标为object info..的按钮添加代码:
Private Sub Command2_Click()
Dim sourcetext As String
Dim msg As String
Dim typetext As String
sourcetext = "The object's source file is " & oledisplay.SourceDoc
typetext = " The type of object is " & oledisplay.Class
msg = sourcetext + vbCrLf + typetext
MsgBox msg, vbInformation, "object information"
End Sub
该段代码是为了显示当前OLE控件的SourceDoc属性和Class属性。当然当OLE控件为空时该按钮无效。
再给标为close的按钮添加代码:
Private Sub Command3_Click()
Dim quit As String
quit = MsgBox("Are you sure to want to quit?", vbYesNo + vbQuestion)
If quit = vbYes Then
End
End If
End Sub
二、 Frmtype窗口的设计:
1. 按上图右边窗体设计其界面,其中四个Option按钮名字从上往下依次为Option1到Option4。
2. OLE容器控件的属性设置代码如下:
If Option1.Value = True Then
Form1.oledisplay.SizeMode = 1 'sizeMode=1---Stretch
Else
Form1.oledisplay.SizeMode = 2 '2---Autosize
End If
If Option3.Value = True Then
Form1.oledisplay.OLETypeAllowed = 1 '1--embedded
Else
Form1.oledisplay.OLETypeAllowed = 0 '0--linked
End If
3. 装入“插入对象”对话框,可使用下面代码:
Form1.oledisplay.InsertObjDlg
4. 要恢复标为object info..的按钮有效,须用如下代码:
If Form1.oledisplay.Class <> "" Then
Form1.Command2.Enabled = True
End If
鉴于节约篇幅,用户可在其基础上添加其余全部具体代码。
展开阅读全文