PB編程經驗談

 

  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/Start.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/Shared下的幾個共享庫與你的程序一起發佈,它們是:pbvm60.dll、pbodb60.dll、pbdwe60.dll。後臺若使用MS SQL Server,還得帶上pbmss60.dll;若使用Sybase SQL Anywhere,要帶上pbo7360.dll;若使用Informix V7.x,要帶上pbin760.dll。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章