用对象链接与嵌入(ole)扩展visual basic.docx
OLE使得VISUALBASIC应用程序能访问WINDOWS环境中其他应用程序的功能。前面所用的控件都是内置在VISUALBASIC中的,这些内置对象的出现在编辑器的工具栏中,可以把它们放到窗体上。但WINDOWS环境中的有些对象不是VISUALBASIC所独有的,未放在VISUALBASIC中,而是由其他应用程序提供的,但可以在应用程序中使用这些对象。WORD文档就属于这种对象,可以将WORD文档放在应用程序中,而不需要对其文件内容及组织方式有太多的了解。需要编辑WORD文档时,可以暂时借用WORD的菜单和工具条,将其显示在应用程序中;随后用户在应用程序中就象在用WORD一样编辑文档。要在VISUALBASIC中加入OLE功能,必须用OLE控件,以便将其他应用程序中的对象插入程序中。一次只能在OLE容器控件中放入一个对象,但统一窗体上可以含有多个OLE容器控件,各有自己的对象。1设计时链接与嵌入一、用拖放法嵌入对象用拖放法嵌入对象的具体步骤如下1.开始一个新的VB项目,并把OLE容器控件放在窗体上。2.在“插入对象”对话框中,单击“取消”钮,以便后面放置OLE对象。3.在OLE容器控件的属性窗口中,将SIZEMODE属性变为1STRETCH对于可缩放图形或2AUTOSIZE对于不宜缩放的文本和图形,以调整对象或尺寸。SIZEMODE属性取值及含义如下表数值说明CLIP对象按实际大小,大于OLE容器控件的部分被剪切掉STRETCH对象图形调整成OLE容器控件的大小,对象的缩放可能会使图形扭曲AUTOSIZEOLE容器控件缩放以显示整个对象ZOOM对象图形尽量调整成OLE容器控件的大小,但保持原有比例4.接着启动支持OLE的应用程序,如打开一篇WORD文档文件,并选中其中一部分内容,以实现在OLE容器控件中嵌入MICROSOFTWORD文档。5.在屏幕上同时显示VISUALBASIC和WORD时(或用ALTTAB切换),拖动文档或其一部分到空OLE容器控件中。6.拖动对象时,指针箭头下出现一个长方形,将其放到OLE容器控件中,于是WORD文档出现在OLE容器控件中,如上图所示。二、OLE容器控件对象的常用属性CLASS属性产生对象的应用程序名,也是嵌入文档的类型。SOURCEDOC数据或引用的数据,即存入对象的文件名。SOURCEITEM选作嵌入的文档部分(全文档时为空)。OLETYPEALLOWED源文档是链接还是嵌入到OLE容器控件中,这就取决于这个属性,它的具体取值如下数值常量说明0VBOLELINKED链接,OLE容器控件只能包含链接对象1VBOLEEMBEDDED嵌入,OLE容器控件只能包含嵌入对象2VBOLEEITHERLE容器控件可包含链接或嵌入对象三、用“插入对象”对话框实现链接用“插入对象”对话框实现链接,步骤的如下1.开始一个新的VB项目,并把OLE容器控件放在窗体上。2.在“插入对象”对话框中,选择“由文件创建”选项并选定“链接”复选框。如下图中所示3.单击“浏览”按钮,找到所需文件。四、保存和获取对象由于嵌入对象中的数据并不自动保存,要保存嵌入对象及服务器应用程序所做的修改,可用SAVETOFILE方法OLE1SAVETOFILEFILENUMBERFILENUMBER对应二进制方式下打开的文件。要装入存放成数据文件的对象,可用READFROMFILE方法。其语法如下OLE1READFROMFILEFILENUMBER五、现场编辑现场编辑也叫现场激活,它是VISUALBASIC中嵌入对象的增强功能。最简单的方法就是双击对象,这时应用程序的菜单和工具条可代替OLE容器控件的菜单和工具条。2运行时链接与嵌入本节通过一个实例介绍运行时实现链接与嵌入。该例子有两个窗体,界面如下;左边为主窗口,右边窗口为单击主窗口中的INSERTOBJECT按钮后出现的,右边窗口的作用是为动态嵌入的OLE容器控件设置SIZEMODE属性和OLETYPEALLOWED属性,即而装入“插入对象”对话框。下面先设计主窗口。一、主窗口的设计1.开始一个新的VB项目,并把OLE容器控件放在窗体上。2.在“插入对象”对话框中,单击CANCEL钮,以便后面放置OLE对象,并按上面左图调整OLE控件的大小。3.按上面左主窗口图依次添加三个按钮,CAPTION属性分别为INSERTOBJECT、OBJECTINFO、CLOSE。4.先给标为INSERTOBJECT的按钮添加代码PRIVATESUBCOMMAND1_CLICKFRMTYPESHOWENDSUBFRMTYPE为上图右边窗体的名字。再给标为OBJECTINFO的按钮添加代码PRIVATESUBCOMMAND2_CLICKDIMSOURCETEXTASSTRINGDIMMSGASSTRINGDIMTYPETEXTASSTRINGSOURCETEXT“THEOBJECTSSOURCEFILEIS“OLEDISPLAYSOURCEDOCTYPETEXT“THETYPEOFOBJECTIS“OLEDISPLAYCLASSMSGSOURCETEXTVBCRLFTYPETEXTMSGBOXMSG,VBINATION,“OBJECTINATION“ENDSUB该段代码是为了显示当前OLE控件的SOURCEDOC属性和CLASS属性。当然当OLE控件为空时该按钮无效。再给标为CLOSE的按钮添加代码PRIVATESUBCOMMAND3_CLICKDIMQUITASSTRINGQUITMSGBOX“AREYOUSURETOWANTTOQUIT“,VBYESNOVBQUESTIONIFQUITVBYESTHENENDENDIFENDSUB二、FRMTYPE窗口的设计1.按上图右边窗体设计其界面,其中四个OPTION按钮名字从上往下依次为OPTION1到OPTION4。2.OLE容器控件的属性设置代码如下IFOPTION1VALUETRUETHEN1OLEDISPLAYSIZEMODE1SIZEMODE1STRETCHELSE1OLEDISPLAYSIZEMODE22AUTOSIZEENDIFIFOPTION3VALUETRUETHEN1OLEDISPLAYOLETYPEALLOWED11EMBEDDEDELSE1OLEDISPLAYOLETYPEALLOWED00LINKEDENDIF3.装入“插入对象”对话框,可使用下面代码1OLEDISPLAYINSERTOBJDLG4.要恢复标为OBJECTINFO的按钮有效,须用如下代码IF1OLEDISPLAYCLASS““THEN1COMMAND2ENABLEDTRUEENDIF鉴于节约篇幅,用户可在其基础上添加其余全部具体代码。