OLE(Object linking and Embedding),即對象連接與嵌入簡稱,是在Windows環境下實現不同Windows實用程序之間共享數據和程序功能的一種方法。在Power Builder的應用中實現OLE,則Power Builder作為OLE Container,在其中調用OLE Server,利用OLE Server提供的功能來顯示和操縱OLE對象。
Power Builder的數據窗口(DataWindow)支持OLE2.0。在其中可建立Blob(Binary Large Object二進制大型對象)或image類型的字段,這種字段的數據為一OLE對象。由於數據窗口支持OLE 2.0,因此在使用時你需要保證你要用到的OLE Server也要支持OLE2.0對象。用戶或程序可以激活該OLE字段,並且可以向LE Server發送簡單的命令,在Power Builder的數據窗口中,你可以建立OLE字段。一個OLE字段可以完成如下功能:
本文將結合一個例子解釋如何完成上述功能。在數據庫中,建一個表中,該表有一個image 類型的字段,用於存放Windows Paintbrush編輯的bmp圖,Power Builder可在數據窗口中提取該表的記錄,並把image字段中的bmp圖顯示在窗口中,然後通過在數據窗中雙點(Double Click)該圖,自動打開Paintbrush並調出bmp圖,用戶可對它進行一些修改和保存修改結果。
具體實現步驟如下:
一、建立OLE字段
在本例中我們就建立一個表Paint,內含2個字段,一個字段名為ID,另一個字段名稱作File。進入Power Builer的Database畫筆來建此表。ID字段取type為integer,不許為空;File字段type為Image,可為空,並選ID為主鍵。注:File字段的數據類型即為所謂Blob類型,但不同DBMS中取的名字不同,如watcom SQL稱為long birary,而SQL Server為Image或Text。
二、設置 Autocommit
在使用Sybase SQL Server數據庫時,含有OLE字段的DataWindow所使用的Transaction Object(事務對象)中的AutoCommit項必須置為TRUE,在設計DataWindow前,可通過Preference畫筆,選擇Database圖標,將其中的Autocommit項賦值為1。
三、設計數據窗口
在DataWindow畫筆中打開建好的Paint表,但此時只選擇ID字段進行顯示,而先不要選擇file字段(我們將在設計窗口中再添加此字段)。DataWindow的設計窗口,從Objects菜單中選擇OLE Database Blob項,然後在設計窗口中適當位置點鼠標左鍵,此時Database Birary/Text Large Object 對話窗顯示出來。逐項填寫對話窗:
在Name項,填入適當名字,此項可選,但起了名字後,可使你在程序中引用。
在ClIEnt Class中填入DataWindow,可選。
在ClIEnt Name中填入當前DataWindow的名字,可選。
在Table中選擇Paint表 。
在Large Binary/Text Columns中,選擇file字段 。
在Key Clause中,選id=:id,該項用於構造where子句,即where id=:id,用於定位相應記錄。
在File template中,填入一個bmp文件名,或通過Browse鍵來查找一個文件,比如我們選擇arcade.bmp。
在OLE Class,Description (Only Class is Used)中,通過下拉菜單選擇Paintbrush。
在ClIEnt Name Expression:中,填入某一字符串表達式,該表達式將在OLE Server運行時,顯示在其Title處,如填入".BMP File"+String(id)
按OK鍵 。
此時,Power Builder關閉該對話窗,並回到DataWindow的設計窗口,OLE字段以一個小方框的形式顯示出來。般情況當你運行該DataWindow時,上述小方框不顯示出來。因此,為了識別該OLE字段在DataWindow中的位置,我們可以在該小方框後擺放一個可以識的東西,如一個橢圓等等,因此在DataWindow顯示時,我們只要雙點該橢圓,即可激活OLE Server。
四、預浏覽(PrevIEw)OLE對象
在DataWindow的設計窗口下,點按Preveiw圖標,然後點按Insert圖標,在Paint表中添加一行,填入id,然後雙點橢圓,此時Paintbrush被激活。同時打開arcade.bmp,做一些修改,然後從Paintbrush的File菜單中選擇Update項,來更新你的修改,此時OLE Server將你的修改信息送回DataWindow,然後通過選擇File菜單中的Close項關閉Paintbrush並回到DataWindow,此時在你的DataWindow中OLE字段所在處顯示出了Paintbrush所畫的圖標。按Upd DB圖標,將OLE數據存入數據庫中以後,當你 庫中查出Paint表中的記錄時,你可以通過雙點OLE對象來操作它,方法同上。