国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于數(shù)據(jù)窗口技術(shù)用戶可管理界面軟件的實(shí)現(xiàn)

2014-05-30 10:48張新業(yè)張振友
電腦知識(shí)與技術(shù) 2014年8期
關(guān)鍵詞:用戶界面控件語法

張新業(yè) 張振友

摘要:利用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ǔ),而無需軟件開發(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),窗口及窗口中其它控件的實(shí)現(xiàn)思想與此類似。

對(duì)用戶界面的管理包括獲取用戶界面的各種界面元素、對(duì)界面元素的屬性進(jìn)行重新設(shè)置、持久存儲(chǔ)修改結(jié)果、界面再次被載入時(shí)通過最后一次的修改結(jié)果重構(gòu)數(shù)據(jù)窗口等主要內(nèi)容。總體結(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ù)窗口的語法,通過該語法重建該數(shù)據(jù)窗口;若用戶未對(duì)該數(shù)據(jù)窗口進(jìn)行過管理配置,則不存在該數(shù)據(jù)窗口語法的存儲(chǔ)信息,這時(shí)直接使用原始數(shù)據(jù)窗口。數(shù)據(jù)窗口構(gòu)建(constractor)事件代碼如下:

string ls_datawindow_name,ls_datawindow_script,ls_error

blob lb_script

ls_datawindow_name =this.dataobject

long ll_count

//檢查數(shù)據(jù)庫中是否已保存了該數(shù)據(jù)窗口的語法

select count(*) into :ll_count from dw_describe_script

where datawindow_name = :ls_datawindow_name;

if ll_count>0 then

//已存在該數(shù)據(jù)窗口的語法,則取得原有語法

selectblob datawindow_scrip into :lb_script from dw_describe_script

where datawindow_name = :ls_datawindow_name;

ls_datawindow_script = string(lb_script)

//通過所取得的數(shù)據(jù)窗口語法重建數(shù)據(jù)窗口

this.create(ls_datawindow_script,ls_error)

if len(ls_error) >0 then

MessageBox("錯(cuò)誤信息", "創(chuàng)建數(shù)據(jù)窗口錯(cuò)誤: ~r" + ls_error)

end if

end if

其中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ù)窗口語法的代碼如下:

string ls_datawindow_name,ls_datawindow_script

blob lb_script

long ll_rows

ls_datawindow_name=this.dataobject//取得數(shù)據(jù)窗口對(duì)象名字

//取得數(shù)據(jù)窗口語法

ls_datawindow_script=this.Describe ("datawindow.syntax")

lb_script = blob(ls_datawindow_script)

//檢查數(shù)據(jù)庫中是否已保存有該數(shù)據(jù)窗口語法

select count(*) into :ll_rows from dw_describe_script

where datawindow_name = :ls_datawindow_name;

if ll_rows=0 then

//不存在該數(shù)據(jù)窗口語法,則插入一條記錄。

insert into dw_describe_script(datawindow_name)

values(:ls_datawindow_name) ;

if sqlca.sqlcode =-1 then

rollback;

messagebox("信息提示","增加數(shù)據(jù)窗口格式失?。?)

return

end if

end if

//更新數(shù)據(jù)窗口語法

sqlca.autocommit=true

updateblob dw_describe_script set datawindow_scrip = :lb_script

where datawindow_name = :ls_datawindow_name;

sqlca.autocommit=false

if sqlca.SQLNRows<1 then

rollback;

messagebox('錯(cuò)誤','修改數(shù)據(jù)窗口格式失敗')

return

end if

2.3 界面管理工具

界面管理工具是軟件使用者管理用戶界面的工具,用戶通過點(diǎn)擊數(shù)據(jù)窗口,從彈出的菜單中打開該如圖2所示的窗口。

在該窗口的open事件中通過Describe函數(shù)取得原數(shù)據(jù)窗口語法字符串,然后取得由制表符分隔的每個(gè)控件的名字,通過Describe (ls_object_name + ".type")判斷控件類型,對(duì)于不同類型的控件取得相應(yīng)屬性并顯示于圖2所示的窗口中。

用戶通過通過圖2修改各種控件的屬性,也包括新建、隱藏?cái)?shù)據(jù)窗口中的控件等。當(dāng)用戶點(diǎn)擊確定按鈕后,通過modify函數(shù)將修改后的結(jié)果反映到原數(shù)據(jù)窗口中。

由于篇幅所限,本部分代碼從略。

3 結(jié)束語

除了對(duì)數(shù)據(jù)窗口中原有控件的屬性進(jìn)行設(shè)置外,本系統(tǒng)還允許用戶添加如靜態(tài)文本、按鈕、圖片等新控件,大大提高了軟件界面的適用性,收到了良好的效果。

猜你喜歡
用戶界面控件語法
自然用戶界面在智能家居系統(tǒng)中的應(yīng)用路徑創(chuàng)新研究:生成式人工智能技術(shù)的調(diào)節(jié)作用
基于CiteSpace的國外用戶界面體驗(yàn)圖譜量化分析
跟蹤導(dǎo)練(二)4
關(guān)于.net控件數(shù)組的探討
Book 5 Unit 1~Unit 3語法鞏固練習(xí)
UI用戶界面色彩設(shè)計(jì)研究
基于B/S的跨平臺(tái)用戶界面可配置算法研究
ASP.NET服務(wù)器端驗(yàn)證控件的使用
基于嵌入式MINIGUI控件子類化技術(shù)的深入研究與應(yīng)用
Spreadsheet控件在Delphi數(shù)據(jù)庫系統(tǒng)中的編程與應(yīng)用
文成县| 芜湖县| 阳曲县| 乌拉特后旗| 城固县| 泸定县| 承德市| 若羌县| 凭祥市| 伊金霍洛旗| 枣阳市| 连江县| 霍邱县| 东莞市| 黔江区| 永登县| 集贤县| 辉县市| 东光县| 腾冲县| 砚山县| 南乐县| 南丰县| 阳原县| 高淳县| 克东县| 阳泉市| 安乡县| 靖宇县| 繁峙县| 文水县| 中山市| 高唐县| 道真| 阿城市| 贡觉县| 盐山县| 陈巴尔虎旗| 济源市| 眉山市| 江陵县|