Visual-BASIC程序設(shè)計(jì)第14章_第1頁(yè)
Visual-BASIC程序設(shè)計(jì)第14章_第2頁(yè)
Visual-BASIC程序設(shè)計(jì)第14章_第3頁(yè)
Visual-BASIC程序設(shè)計(jì)第14章_第4頁(yè)
Visual-BASIC程序設(shè)計(jì)第14章_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第14章對(duì)象的鏈接與嵌入--使用OLE控件14.1如何使用OLE控件14.2嵌入對(duì)象與鏈接對(duì)象的區(qū)別14.3在程序中利用屬性創(chuàng)建嵌入和鏈接對(duì)象14.4如何編輯OLE對(duì)象習(xí)題 OLE是ObjectLinkingandEmbedding的英文縮寫,中文譯為對(duì)象的鏈接與嵌入,它的作用是支持其他應(yīng)用程序的對(duì)象鏈接或嵌入到VisualBASIC應(yīng)用程序中來(lái),如Word文檔、Excel工作表、圖像、聲音等等,使得VisualBASIC能夠使用其他應(yīng)用程序的數(shù)據(jù)。剪貼板是大家再熟悉不過(guò)的了,利用它我們完成了不同應(yīng)用程序之間數(shù)據(jù)的傳遞。后來(lái)出現(xiàn)了DDE(動(dòng)態(tài)數(shù)據(jù)交換),使得應(yīng)用程序之間的數(shù)據(jù)交換不再通過(guò)“第三者”(剪貼板),而是使需要數(shù)據(jù)交換的應(yīng)用程序直接進(jìn)行“對(duì)話”。VB提供的OLE控件則進(jìn)一步發(fā)展了DDE,使其功能更完善。下面對(duì)OLE控件作初步的介紹。14.1如何使用OLE控件OLE圖標(biāo)為,它位于工具箱的右下角。下面我們舉例說(shuō)明OLE控件的使用方法。【例14.1】在VisualBASIC窗體上添加一個(gè)OLE控件,并在這個(gè)OLE控件中嵌入一個(gè)事先建立好的Word文檔。具體操作如下:(1)首先準(zhǔn)備好將要嵌入到OLE控件的對(duì)象。啟動(dòng)Word并創(chuàng)建一個(gè)文檔,將其以文件名“l(fā)ist.doc”保存,以備用。(2)啟動(dòng)VB并在窗體上添加一個(gè)OLE控件。單擊工具箱中的OLE控件,然后將鼠標(biāo)移回窗體,按住鼠標(biāo)左鍵在窗體上拖拉(或雙擊OLE控件),就會(huì)出現(xiàn)一個(gè)“插入對(duì)象”對(duì)話框,見圖14.1。此對(duì)話框給出了所有OLE對(duì)象類型。對(duì)話框中有幾個(gè)可供選用的單選鈕和選擇框:(1)“新建”單選鈕:為缺省按鈕。如果原來(lái)沒有準(zhǔn)備好要嵌入的對(duì)象,就需要選擇“新建”。VisualBASIC就會(huì)立即啟動(dòng)用戶在“對(duì)象類型”中選擇的應(yīng)用程序,在應(yīng)用程序中創(chuàng)建所需的對(duì)象。例如,若在“對(duì)象類型”中選擇了“MicrosoftWord文檔”,VB就會(huì)啟動(dòng)Word,然后在Word中建立一個(gè)新文檔作為OLE對(duì)象,用戶可以在其中輸入文檔內(nèi)容。(2)“從文件創(chuàng)建”單選鈕:如果用戶已經(jīng)建立了要嵌入的對(duì)象,則應(yīng)選擇此單選鈕(此時(shí)單選鈕左側(cè)的圓圈內(nèi)有一個(gè)黑圓點(diǎn)),屏幕上會(huì)立即顯示出如圖14.2所示的對(duì)話框。單擊“瀏覽”按鈕,會(huì)出現(xiàn)瀏覽窗口,此時(shí)用戶可以從中選擇要插入的對(duì)象。圖14.1(3)“顯示為圖標(biāo)”選擇框:如果選擇它,插入到OLE控件中的對(duì)象以圖標(biāo)的方式顯示。由于本例的對(duì)象是Word文檔,并且此文檔是事先建好的,所以在對(duì)話框(圖14.1)中選擇“從文件創(chuàng)建”。當(dāng)顯示出如圖14.2所示對(duì)話框時(shí),單擊“瀏覽”,選擇存放在A驅(qū)動(dòng)器上的list.doc文件,并選擇“鏈接”,表示產(chǎn)生一個(gè)鏈接對(duì)象。圖14.2單擊“確定”按鈕,OLE對(duì)象便裝入到OLE控件中(見圖14.3)。圖14.314.2嵌入對(duì)象與鏈接對(duì)象的區(qū)別嵌入與鏈接的不同之處在于插入到OLE控件的對(duì)象(數(shù)據(jù))所存放的位置。例如,當(dāng)我們將一個(gè)Word文檔嵌入到VB應(yīng)用程序中時(shí),VisualBASIC是將Word文檔本身(實(shí)際上是將Word文檔的拷貝)插入到應(yīng)用程序中,其他的程序是不允許訪問(wèn)被嵌入對(duì)象的。而當(dāng)把Word文檔鏈接到VB應(yīng)用程序中時(shí),VisualBASIC是將Word文檔的指針(即地址)插入,在調(diào)用該文檔時(shí)根據(jù)該地址去訪問(wèn)被鏈接的Word文檔。當(dāng)數(shù)據(jù)源發(fā)生變化時(shí),應(yīng)用程序所調(diào)用的數(shù)據(jù)也隨之變化,其他的程序也可以訪問(wèn)被鏈接對(duì)象。如圖14.4和圖14.5示意。圖14.5圖14.4嵌入到OLE控件中的數(shù)據(jù)不會(huì)丟失,但它是以占用更多的空間為代價(jià)的。鏈接到OLE控件中的數(shù)據(jù)雖然占用較少的空間,但是數(shù)據(jù)源容易受外界的影響而丟失,而且當(dāng)應(yīng)用程序在不同的計(jì)算機(jī)上運(yùn)行時(shí),鏈接關(guān)系會(huì)消失(因?yàn)楸绘溄游募赡懿辉谒玫挠?jì)算機(jī)系統(tǒng)中)。14.3在程序中利用屬性創(chuàng)建嵌入和鏈接對(duì)象在14.1節(jié)中,我們借助“插入對(duì)象對(duì)話框”,在應(yīng)用程序中沒有編寫任何代碼就為OLE控件創(chuàng)建了一個(gè)鏈接對(duì)象。下面我們舉例說(shuō)明如何利用編程來(lái)創(chuàng)建嵌入或鏈接對(duì)象?!纠?4.2】設(shè)計(jì)一個(gè)程序,在一個(gè)OLE控件中嵌入Word文檔,在另一個(gè)OLE控件中鏈接Word文檔。設(shè)計(jì)界面如圖14.6所示,由兩個(gè)OLE控件和兩個(gè)命令按鈕組成。圖14.6其中:OLE的AutoActivate屬性用來(lái)設(shè)置以何種方式激活對(duì)象。選值范圍為0~3。0--Manual:手工的。對(duì)象不能自動(dòng)激活。1--GetFocus:當(dāng)?shù)玫浇裹c(diǎn)時(shí)被激活。2--DoubleClick:為缺省值。當(dāng)雙擊時(shí)對(duì)象被激活。3--Automatic:自動(dòng)的。本例中我們選擇了缺省值DoubleClick。名稱屬性給OLE控件設(shè)置一個(gè)名字。編寫單擊“鏈接”命令鈕時(shí)的事件過(guò)程:PrivateSub鏈接_Click()OLE1.Class="Word.Document.8"OLE1.SourceDoc="a:\w1.doc"OLE1.Action=1EndSub第2行OLE1控件的Class屬性指的是嵌入或鏈接到OLE控件中對(duì)象的類名。也可以不在程序中指定而在界面設(shè)計(jì)時(shí)在屬性窗口選中Class屬性,此時(shí)右側(cè)出現(xiàn)3個(gè)點(diǎn)(…),單擊它打開一個(gè)選定類對(duì)話框,見圖14.7所示,此對(duì)話框給出了系統(tǒng)中可用的類名,從中選擇一個(gè)要嵌入對(duì)象的類名稱。我們確定對(duì)象的類名稱為Word.Document.8。圖14.7第3行的SourcrDoc屬性指定要鏈接的文件名(包括路徑)。第4行的Action屬性設(shè)置一個(gè)值,它的作用是通知系統(tǒng)進(jìn)行何種操作。OLE1的Action屬性的值設(shè)置為1,即通知系統(tǒng)進(jìn)行鏈接操作。此屬性只能在程序中使用,在設(shè)計(jì)階段不可用。Action屬性共有14個(gè)值可供選擇,說(shuō)明如下:0--生成內(nèi)嵌對(duì)象。1--生成鏈接對(duì)象。4--將對(duì)象的數(shù)據(jù)和屬性復(fù)制到系統(tǒng)剪貼板。5--將系統(tǒng)剪貼板中的數(shù)據(jù)粘貼到OLE容器控件。6--從應(yīng)用程序中獲取當(dāng)前數(shù)據(jù)并修改OLE容器控件的內(nèi)容。7--激活OLE控件。9--關(guān)閉OLE對(duì)象。10--刪除OLE對(duì)象。11--將對(duì)象保存到數(shù)據(jù)文件中。12--加載保存到數(shù)據(jù)文件中的OLE對(duì)象。14--顯示插入對(duì)象對(duì)話框。15--顯示特殊粘貼對(duì)話框。17--更新對(duì)象支持的謂詞列表。18--將對(duì)象以O(shè)LEversion1.0版本的文件格式保存。下面是單擊“嵌入”命令按鈕的事件過(guò)程:PrivateSub嵌入_Click()OLE2.Class="Word.Document.8"OLE2.SourceDoc="a:\w1.doc"OLE2.Action=0EndSub對(duì)象OLE2的Class屬性和SourceDoc屬性與OLE1相同,所以類名也是“Word.Document.8”,例中兩個(gè)控件使用同一個(gè)文件,所以文件名也為“a:\w1.doc”,Action屬性設(shè)置為0,通知系統(tǒng)進(jìn)行嵌入操作。運(yùn)行以上程序,單擊“鏈接”命令按鈕后,執(zhí)行事件過(guò)程“鏈接_Click()”,將“a:\w1.doc”鏈接到OLE1控件中,它是一個(gè)事先準(zhǔn)備好的Word文檔,見圖14.8中的左側(cè)文字。單擊“嵌入”命令鈕,執(zhí)行事件過(guò)程“嵌入_Click()”,將“a:\w1.doc”嵌入到OLE2控件中,見圖14.8中的右側(cè)文字。因?yàn)殒溄雍颓度氲氖峭粋€(gè)文件,所以表面上看執(zhí)行的結(jié)果是一樣的,但實(shí)際上它們有著本質(zhì)上的區(qū)別,如前述鏈接是由指針指向了文件所在位置,而嵌入的是一份數(shù)據(jù)的拷貝。在前面我們已經(jīng)提到過(guò),文件中數(shù)據(jù)本身的改變會(huì)影響鏈接的內(nèi)容,但卻不會(huì)影響嵌入的內(nèi)容。為了證實(shí)這一點(diǎn),現(xiàn)在用以下操作來(lái)看看鏈接和嵌入的不同。圖14.8圖14.9(1)在Word中打開文檔“a:\w1.doc”。(2)將字體由六號(hào)字改為四號(hào)字。(3)將修改好的文件存盤。在將修改過(guò)的文件進(jìn)行保存時(shí),就會(huì)看到OLE1控件中的數(shù)據(jù)被修改,字號(hào)由六號(hào)修改為四號(hào),而OLE2中的數(shù)據(jù)則沒有發(fā)生任何改變。見圖14.9。14.4如何編輯OLE對(duì)象不論在設(shè)計(jì)時(shí)還是在運(yùn)行時(shí)都可以隨時(shí)對(duì)OLE對(duì)象進(jìn)行編輯。在設(shè)計(jì)階段,如果要編輯OLE對(duì)象,在OLE控件上單擊鼠標(biāo)右鍵,立即彈出一個(gè)如圖14.10的菜單。圖14.10讀者已比較熟悉這種對(duì)話框,一定不陌生,這里不再做詳細(xì)介紹,請(qǐng)讀者自己通過(guò)使用來(lái)掌握它。當(dāng)在運(yùn)行時(shí),如果要編輯OLE對(duì)象,同樣在OLE控件上單擊鼠標(biāo)右鍵,立即彈出一個(gè)如圖14.11的菜單,讀者自己上機(jī)實(shí)驗(yàn)一下,掌握它

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論