王超
(遼寧建筑職業(yè)學(xué)院,遼寧遼陽 111000)
基于PowerBuilder應(yīng)用程序的開發(fā)
王超
(遼寧建筑職業(yè)學(xué)院,遼寧遼陽 111000)
在進(jìn)行任何開發(fā)和設(shè)計(jì)PowerBuiler應(yīng)用程序之前,必須去制定一個(gè)計(jì)劃。這個(gè)應(yīng)用程序看上去應(yīng)該是什么樣、它是如何工作的、把各個(gè)部分組合到一塊的組成結(jié)構(gòu)是什么、采取什么樣的數(shù)據(jù)庫、組織它的最好的方式是什么,以及如何使它在大小、速度和易用性方面達(dá)到最優(yōu),這些問題都需要我們?cè)陂_發(fā)之前仔細(xì)地研究。本文通過一個(gè)開發(fā)實(shí)例闡述了PowerBuilder應(yīng)用程序的開發(fā)過程。
PowerBuilder 應(yīng)用程序 開發(fā)
在進(jìn)行任何開發(fā)和設(shè)計(jì)PowerBuiler應(yīng)用程序之前,必須去制定一個(gè)計(jì)劃。這個(gè)應(yīng)用程序看上去應(yīng)該是什么樣、它是如何工作的、把各個(gè)部分組合到一塊的組成結(jié)構(gòu)是什么、采取什么樣的數(shù)據(jù)庫、組織它的最好的方式是什么,以及如何使它在大小、速度和易用性方面達(dá)到最優(yōu),這些問題都需要我們?cè)陂_發(fā)之前仔細(xì)地研究。PowerBuilder應(yīng)用程序的開發(fā)過程包括分析、設(shè)計(jì)、開發(fā)、調(diào)試、生成可執(zhí)行文件這幾個(gè)部分。
這個(gè)階段也常常被稱為編碼階段,在這里說成開發(fā)是因?yàn)?,在PowerBuilder中創(chuàng)建應(yīng)用程序更多的是定義和設(shè)置屬性,而不是編寫大量的代碼,用戶可能會(huì)認(rèn)為如果不編寫代碼,就是在浪費(fèi)時(shí)間,但是用戶應(yīng)該摒棄這種想法因?yàn)樗褪侨康拈_發(fā)過程。在這里將講述開發(fā)過程的所有關(guān)鍵問題。用戶可以用任何適合于用戶項(xiàng)目的方法,以任何順序完成下列三個(gè)任務(wù),但是在用戶進(jìn)行調(diào)試和測(cè)試之前,必須將它們?nèi)客瓿伞?1)創(chuàng)建數(shù)據(jù)庫。數(shù)據(jù)庫的設(shè)計(jì)是在設(shè)計(jì)階段完成的,現(xiàn)在要真正地實(shí)現(xiàn)它并創(chuàng)建各種表和索引。這個(gè)過程可以借助于一些數(shù)據(jù)庫設(shè)計(jì)的工具,它們可以將設(shè)計(jì)中產(chǎn)生的圖表直接轉(zhuǎn)換成創(chuàng)建所有表、索引和事件觸發(fā)器的SQL腳本程序,在這個(gè)過程中將使用Database畫板。(2)創(chuàng)建應(yīng)用程序。創(chuàng)建應(yīng)用程序?qū)ο蟆TO(shè)置應(yīng)用程序級(jí)的屬性并編寫應(yīng)用程序腳本,盡管這些在以后都是可以改變的,但最好還是事先想好需求什么。后面將詳細(xì)講述有關(guān)應(yīng)用程序?qū)ο蠛虯pplication畫板。(3)創(chuàng)建開發(fā)數(shù)據(jù)庫、基礎(chǔ)類庫、用戶對(duì)象和父窗口。創(chuàng)建開發(fā)數(shù)據(jù)庫是為了保存本項(xiàng)目的對(duì)象,和開發(fā)數(shù)據(jù)庫同時(shí)建立的還有一個(gè)子目錄結(jié)構(gòu),另外,用于版本控制和項(xiàng)目管理的對(duì)象檢查標(biāo)準(zhǔn)也應(yīng)被建立。
圖1 數(shù)據(jù)庫畫板
圖2 數(shù)據(jù)表定義窗口
基于前一階段的設(shè)計(jì)結(jié)果,我們討論一下以下問題:有加快開發(fā)速度的公共函數(shù)和用戶對(duì)象嗎?有什么標(biāo)準(zhǔn)窗口嗎?能通過創(chuàng)建父窗口來提高開發(fā)速度和增加其標(biāo)準(zhǔn)化程度嗎?現(xiàn)在開發(fā)一些只有戰(zhàn)略性的對(duì)象可以在后面的開發(fā)過程中節(jié)省許多時(shí)間。
下列步驟也可以按任意順序來做。實(shí)際上,把它們看成是一個(gè)完整的反復(fù)過程可能會(huì)更好。因?yàn)樵趧?chuàng)建應(yīng)用程序的過程中,不可避免地要在Window畫板、Datawindow畫板和其他畫板之間轉(zhuǎn)來轉(zhuǎn)去。(1)創(chuàng)建窗口對(duì)象。應(yīng)用程序的窗口把所有Datawindow、控件和用戶對(duì)象結(jié)合在一起,形成完整的用戶界面。有關(guān)如何在Window畫板中創(chuàng)建窗口的所有內(nèi)容將在后面講述。(2)創(chuàng)建菜單對(duì)象。一般在應(yīng)用程序的主窗口中都有一個(gè)下拉菜單,這個(gè)菜單是在Menu畫板中創(chuàng)建的。在Menu畫板中,可以定義顯示在菜單中的菜單項(xiàng)和子菜單,以及當(dāng)菜單項(xiàng)被選中時(shí)執(zhí)行什么代碼。(3)創(chuàng)建Datawindow對(duì)象??梢哉f,任何一個(gè)PowerBuilder應(yīng)用程序的核心都是數(shù)據(jù)庫和用戶與數(shù)據(jù)庫的交互,因此數(shù)據(jù)窗口就是PowerBuilder應(yīng)用程序開發(fā)的重點(diǎn)。它們定義要使用的數(shù)據(jù)以及用戶怎樣來查看和編輯這些數(shù)據(jù),它們能自動(dòng)實(shí)現(xiàn)對(duì)這些接口的編碼。(4)編碼。在許多畫板中都可以進(jìn)行編碼工作,可以在窗口和菜單項(xiàng)中為按鈕保存代碼。大部分代碼用來連接不同的控件以及實(shí)現(xiàn)它們之間的聯(lián)系,另有一些代碼用于直接訪問和更新數(shù)據(jù)。后面將詳細(xì)講述Powerscript語言以及嵌入式SQL語句。
PowerBuilder中有一個(gè)功能強(qiáng)大的集成調(diào)試器,可以跟蹤程序執(zhí)行和驗(yàn)證變量的值,它與其他環(huán)境中使用的調(diào)試器差不多。但是,編寫的代碼并不是唯一需要調(diào)試的東西,有時(shí)還需要跟蹤發(fā)送到數(shù)據(jù)庫的命令以及從數(shù)據(jù)庫返回的數(shù)據(jù)。
測(cè)試需要在多個(gè)不同的層次上進(jìn)行。必須保證該程序符合規(guī)格定義,不出現(xiàn)任何不希望出現(xiàn)的事情。用戶的交互必須是可以預(yù)料的,并且即使涉及到太多的記錄時(shí),程序也不應(yīng)該死掉,這些都應(yīng)該在測(cè)試階段好好把握。
圖4 菜單欄中的菜單項(xiàng)
在我們學(xué)習(xí)PowerBuilder的開始階段時(shí),一般可以通過簡單的選擇菜單命令完成生成可執(zhí)行文件的工作,但是事情并不是那么簡單的,隨著應(yīng)用程序大小和復(fù)雜性的增長,就會(huì)碰到有關(guān)可執(zhí)行文件大小和EXE中沒有包含的、動(dòng)態(tài)分配對(duì)象的問題,用戶就需要在這個(gè)階段,利用PowerBuilder動(dòng)態(tài)庫和它的資源文件來解決這些問題來創(chuàng)建高效的、專業(yè)化的Windows程序。
要求:展現(xiàn)使用PowerBuilder編程的完整過程。
技術(shù)要點(diǎn):建立應(yīng)用對(duì)象、建立數(shù)據(jù)庫、窗口對(duì)象、菜單對(duì)象、編譯成exe和dll文件。
操作步驟:
(1)在e:student下建立工作區(qū)newapp.pbw。(2)創(chuàng)建應(yīng)用對(duì)象newapp。(3)創(chuàng)建數(shù)據(jù)庫,運(yùn)行PowerBuilder 8.0,在工具欄中單擊Database圖標(biāo),進(jìn)入數(shù)據(jù)庫畫板,打開ODB ODBC列表項(xiàng),再打開其下面的Utilities列表項(xiàng),如圖1所示。(4)創(chuàng)建數(shù)據(jù)表,右擊數(shù)據(jù)庫newdata中的Tables項(xiàng),在彈出菜單中選擇“New Tables…”或單擊工具欄上的新建表按鈕,出現(xiàn)如圖2所示的列定義子窗口??捎肨ab鍵在六個(gè)輸入框間切換輸入內(nèi)容:如在Column Name(列名稱)中輸入xh;Data Type(數(shù)據(jù)類型)中輸入char指定該列的數(shù)據(jù)類型;在Width(寬度)中輸入9;Dec(小數(shù)點(diǎn)位數(shù))不輸入;在Null(該列是否允許為空)中選擇No(主鍵不能為空);Default(默認(rèn)值)來定義新插入一列時(shí)該列的默認(rèn)值。(5)創(chuàng)建數(shù)據(jù)窗口對(duì)象。單擊工具欄上的New按鈕,然后在彈出的New對(duì)話框中選擇DataWindow標(biāo)簽頁,選擇Grid(網(wǎng)格)顯示風(fēng)格后,單擊OK按鈕,將會(huì)彈出選擇數(shù)據(jù)源對(duì)話框,選中Quick Select數(shù)據(jù)源,單擊Next按鈕,在Tables列表中單擊newtable,然后單擊Add All按鈕,單擊OK按鈕,彈出Select Color and Border Settings對(duì)話框后,單擊Next按鈕,會(huì)彈出列出了數(shù)據(jù)窗口的基本屬性的對(duì)話框,點(diǎn)擊Finish按鈕,進(jìn)入數(shù)據(jù)窗口畫板。單擊工具欄上的按鈕或選擇菜單File︱Save As,鍵入數(shù)據(jù)窗口對(duì)象名:d_newtable,再單擊OK按鈕存盤。(6)創(chuàng)建窗口對(duì)象w_newtable,按如圖3所示添加控件、設(shè)置屬性、編碼。(7)創(chuàng)建菜單對(duì)象。單擊工具欄中上的圖標(biāo),或選擇File/New菜單項(xiàng),選擇PB Object選項(xiàng)卡,選中圖標(biāo)后單擊OK按鈕,打開菜單畫板。在菜單欄上插入第一個(gè)菜單項(xiàng)(菜單標(biāo)題)。選擇Insert/Submenu Item菜單項(xiàng),或單擊鼠標(biāo)右鍵,在彈出式菜單中選擇Insert Submenu Item菜單項(xiàng), PowerBuilder顯示一個(gè)空的文本輸入框,在文本框內(nèi)輸入菜單標(biāo)題:插入,然后按Enter鍵,選中剛輸入的【插入】菜單項(xiàng),右擊選擇Insert Menu Item At End菜單項(xiàng),在新的文本編輯框內(nèi)輸入刪除,按回車鍵。仿此過程再加入菜單項(xiàng)【存盤】、【退出】,這樣菜單欄中所有的菜單項(xiàng)建立完畢如圖4所示。單擊畫板工具欄上的save按鈕,或在系統(tǒng)菜單中選擇File Save選項(xiàng),彈出Save Menu對(duì)話框,輸入菜單文件名m_main,同時(shí)在菜單對(duì)象窗口的標(biāo)題欄顯示m_main。
雙擊窗口對(duì)象w_newtable,通過在MenuName屬性中輸入m_main菜單名或單擊右邊的Browse的按鈕來選擇需要關(guān)聯(lián)的菜單。單擊工具欄中的按鈕或按快捷鍵,調(diào)試、測(cè)試程序。最后將程序編譯成為可執(zhí)行文件,創(chuàng)建步驟一般如下:準(zhǔn)備工作、創(chuàng)建新工程或打開已保存工程、設(shè)置編譯選項(xiàng)、生成可執(zhí)行文件。
[1]張斌,陳越.Powerbuilder應(yīng)用開發(fā)注記[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,1997(08).
[2]木尼拉·塔里甫.靈活運(yùn)用PowerBuilder中事務(wù)管理的方法[J].中國科技信息, 2007(06).
[3]盧守東.PowerBuilder應(yīng)用程序的數(shù)據(jù)庫連接技術(shù)[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2007(27).