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