資源描述:
《基于數(shù)據(jù)窗口技術(shù)用戶可管理界面軟件實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、基于數(shù)據(jù)窗口技術(shù)用戶可管理界面軟件實(shí)現(xiàn)摘要:利用Powerbuilder數(shù)據(jù)窗口技術(shù)實(shí)現(xiàn)最終用戶對(duì)應(yīng)用軟件界面的管理,并將用戶對(duì)界面的修改結(jié)果持久存儲(chǔ)到數(shù)據(jù)庫,軟件開發(fā)者無需對(duì)軟件重新編譯和連接,提高了軟件的適應(yīng)性,降低了軟件維護(hù)成本。關(guān)鍵詞:數(shù)據(jù)窗口;用戶可管理界面軟件;用戶界面;Powerbuilder中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2014)08-1654-03用戶可管理界面軟件也稱為用戶可配置界面軟件,是指允許軟件使用者,也就是軟件的最終用戶通過軟件自帶的功能對(duì)用戶界面進(jìn)行管理,如修改界面的外觀,增加或減少界面元素等,并且將這些變化持久存儲(chǔ),而無需軟
2、件開發(fā)商對(duì)已發(fā)布的軟件進(jìn)行重新編譯和發(fā)布,因此用戶可管理界面軟件可以提高軟件的適用性,降低軟件的維護(hù)成本。用戶可管理界面軟件既是一種技術(shù),也是一種編程思想和方法,可以在任何開發(fā)工具中加以貫徹。該文給出的是基于Powerbuilder數(shù)據(jù)窗口技術(shù)的一種實(shí)現(xiàn)。1總體設(shè)計(jì)思路Powerbuilder應(yīng)用程序中,界面元素包括窗口、菜單、窗口中的各種控件等,數(shù)據(jù)窗口(DataWindow)控件是窗口控件的一種,數(shù)據(jù)窗口控件通過與數(shù)據(jù)窗口對(duì)象相結(jié)合,用多種風(fēng)格向用戶展示數(shù)據(jù)并將用戶對(duì)數(shù)據(jù)操作的結(jié)果保存到數(shù)據(jù)庫中,因此數(shù)據(jù)窗口構(gòu)成了應(yīng)用程序界面的最主要的元素。該文主要介紹數(shù)據(jù)窗口界面用戶可管理的實(shí)現(xiàn),窗口
3、及窗口中其它控件的實(shí)現(xiàn)思想與此類似。對(duì)用戶界面的管理包括獲取用戶界面的各種界面元素、對(duì)界面元素的屬性進(jìn)行重新設(shè)置、持久存儲(chǔ)修改結(jié)果、界面再次被載入時(shí)通過最后一次的修改結(jié)果重構(gòu)數(shù)據(jù)窗口等主要內(nèi)容??傮w結(jié)構(gòu)圖如圖1所示。2系統(tǒng)實(shí)現(xiàn)首先構(gòu)造一個(gè)數(shù)據(jù)窗口類型的用戶可視對(duì)象,所有的編程都是面向該用戶對(duì)象的,應(yīng)用程序中的數(shù)據(jù)窗口控件都繼承自該對(duì)象,因此不會(huì)增加程序員的工作量。2.1數(shù)據(jù)窗口語法的讀取及數(shù)據(jù)窗口的重構(gòu)數(shù)據(jù)窗口的重構(gòu)是指使用已經(jīng)存儲(chǔ)的數(shù)據(jù)窗口語法重新構(gòu)建數(shù)據(jù)窗口,代碼可以放入數(shù)據(jù)窗口控件的constractor事件中。首先檢查數(shù)據(jù)庫中是否保存有該數(shù)據(jù)窗口的語法,若存在,則取得該數(shù)據(jù)窗口的語法
4、,通過該語法重建該數(shù)據(jù)窗口;若用戶未對(duì)該數(shù)據(jù)窗口進(jìn)行過管理配置,則不存在該數(shù)據(jù)窗口語法的存儲(chǔ)信息,這時(shí)直接使用原始數(shù)據(jù)窗口。數(shù)據(jù)窗口構(gòu)建(constractor)事件代碼如下:stringls_datawindowname,ls_datawindow_script,ls_errorbloblb_scriptls_datawindow_name二this.dataobjectlongll_count//檢查數(shù)據(jù)庫中是否已保存了該數(shù)據(jù)窗口的語法selectcount(*)into:ll_countfromdw_describe_scriptwheredatawindow_name=:ls_dat
5、awindow_nanie;ifll_count>0then//已存在該數(shù)據(jù)窗口的語法,則取得原有語法selectblobdatawindow_scripinto:lbscriptfromdw_describe_scriptwheredatawindow_name=:ls_datawindow_nanie;ls_datawindow_script=string(lb_script)//通過所取得的數(shù)據(jù)窗口語法重建數(shù)據(jù)窗口this.create(ls_datawindow_script,ls_error)iflen(ls_error)>0thenMessageBox(錯(cuò)誤信息”,“創(chuàng)建數(shù)據(jù)窗口
6、錯(cuò)誤:?r”+ls_error)endifendif其中dw_describe_script表包括數(shù)據(jù)窗口對(duì)象名(datawindow_name)及數(shù)據(jù)窗口語法(datawindow_scrip)等列。2.2數(shù)據(jù)窗口語法的獲取及保存當(dāng)用戶對(duì)數(shù)據(jù)窗口進(jìn)行了修改后,可在數(shù)據(jù)窗口控件的destructor事件中獲取修改后的數(shù)據(jù)窗口語法,并保存到數(shù)據(jù)庫中。保存數(shù)據(jù)窗口語法的代碼如下:string1s_datawindow_name,ls_datawindow_scriptbloblb_scriptlongll_rowsls_datawindow_name=this.dataobject//取得數(shù)據(jù)窗
7、口對(duì)象名字//取得數(shù)據(jù)窗口語法ls_datawindow_script二this.Describe(”datawindow.syntax”)lb_script二blob(ls_datawindow_script)〃檢查數(shù)據(jù)庫中是否已保存有該數(shù)據(jù)窗口語法selectcount(*)into:ll_rowsfromdw_describe_scriptwheredatawindow_name=:ls_datawin