PB編程經驗談
2024-07-21 02:10:22
供稿:網友
pb作為數據庫開發的工具,早已深受廣大開發人員的認可,筆者在開發pb應用程序時,總結了一些編程的經驗技巧,介紹給大家。
1.添加啟動聲音
對win 98的啟動聲音一定不陌生吧,那么有沒有想過為你的pb應用程序添加啟動聲音呢?使用win32 api函數playsound很容易實現。方法是在“global external functions...”中添加如下函數聲明:
function long playsound (string filename,int mod,int flags ) library ″winmm.dll″
獲得這個函數聲明的最好的方法是使用visual basic中的“api viewer”,只需把得到的結果改寫成pb的格式,然后在application的open事件中添加如下代碼:
iret=playsound(″c:/program files/joint tart.wav″,1,1)
參數1指定啟動聲音文件,參數2指定播放模式,參數3指定播放標記。播放成功返回1,否則返回0。若因聲音文件不存在等原因導致播放失敗也不會產生錯誤提示,因此沒有必要對返回值進行捕捉處理。
2.使pb窗口居中
在窗口屬性的position頁中可以粗略地設置窗口的彈出位置。然而,你并不知道客戶機的屏幕分辨率是多少(800×600還是1024×786),不如在open事件中加入下列代碼使其居中:
getenvironment(env)//獲取客戶機環境信息
dy=(pixelstounits(env.screenheight,ypixelstounits!)-this.height)/2
dx=(pixelstounits(env.screenwidth, xpixelstounits!)-this.width)/2
this.move(dx,dy)
//env為environment類型,dx,dy為long類型3.使用activex控件
vb可以直接引用activex控件,而pb只能通過“控件嵌套”的方法來引用。這種方法需要借助ole容器。下面以animation控件為例說明引用過程及約定。
窗體設計時,選擇ole,在彈出的“insert object”對話框中選擇“insert control”頁,在control type下列出了系統中所有注冊過的activex控件,選擇“microsoft animation control”。對activex控件的屬性和方法的引用必須遵循“ole控件.object.屬性(或方法)”的規則。如下代碼通過調用animation控件的屬性和方法來自動播放一個視頻剪輯:
ole—1.object.autoplay =true
//設置為自動播放
ole—1.object.open(″c:/program files/joint/firework.avi″) //打開一個avi文件
若你的pb程序中使用了activex控件,最好把相應的ocx文件與你的程序一起發布,并在安裝程序中進行注冊,因為客戶機不一定注冊了相應控件。注冊的方法是用regsvr32,若采用installshield來制作安裝程序,也可以把所有要注冊的ocx文件放到一個file group中,然后將它的“self-registered”設置成yes來自動注冊。
4.操縱lob
大對象(large object)通常指大文本和大二進制對象,幾乎每一種數據庫都支持它。在pb中可以用updateblob和selectblob語句來對它們進行處理。
(1)用updateblob來把大對象數據寫入數據庫
在編寫管理軟件時,要求把員工的照片(bmp文件)和工作經歷(doc文件)保存在數據庫中,而不是像以前一樣保存它們的文mpno=′9925′; //把圖像數據寫入數據庫
if sqlca.sqlnrows〉0 then commit;
end if
注意,fileread一次只能讀取32k,若文件大于32k應分多次讀取;updateblob執行成功與否不能用sqlcode或sqldbcode來判斷,而要用sqlnrows是否大于0來判斷。
(2)用selectblob從數據庫中讀取大對象數據
要查看員工的照片或工作經歷,就應把相關信息從數據庫中讀出來。主要代碼如下:
blob pic //把pic定義為二進制大對象(binary large object)
selectblob photo into :pic from emp where empno=′9925′;//把圖像數據讀到變量pic中
p_1.setpicture(pic) //用圖像控件顯示圖像
5.編譯技巧
(1)沒有必要將pbl編譯成機器碼dll,即不要選擇“machine code”。那樣做意味著你至少要等待半個小時。編譯成偽碼pbd就行了。
(2)把程序中用到的ico、bmp等文件打包到目標代碼中。方法是:用記事本創建一個擴展名為pbr的資源文件,它的每一行是一個帶完整路徑的文件名,用于告訴編譯器到何處去找用到的資源。
(3)pb應用程序要獨立運行,必須把sybase hared下的幾個共享庫與你的程序一起發布,它們是:pbvm60.dll、pbodb60.dll、pbdwe60.dll。后臺若使用ms sql server,還得帶上pbmss60.dll;若使用sybase sql anywhere,要帶上pbo7360.dll;若使用informix v7.x,要帶上pbin760.dll。