999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Powerbuilder的通用排序模塊設計與實現

2013-04-29 07:11:03蔣玉芳
考試周刊 2013年79期
關鍵詞:排序設置功能

蔣玉芳

摘 要: 利用PowerBuilder的數據窗口,設計一個數據管理信息系統通用的排序模塊,發揮對數據窗口任意字段組合的排序功能。利用此排序模塊,可極大地提高管理信息系統的編程效率,具有很強的實用性。

關鍵詞: Powerbuilder 數據窗口 字段 排序 通用模塊設計

引言

在利用Powerbuilder開發的數據庫信息管理系統中,用戶常常有按某種順序查看數據的要求,而這種要求是會動態改變的,這就要求開發者不能將查詢出來的數據以固定的順序展示給用戶 ,而必須提供按用戶要求對數據進行靈活多變的排序功能。因此,為了節約開發時間,提高開發效率,設計一種通用的排序程序模塊顯得非常有必要。

把要排序的數據窗口作為參數傳遞給此通用排序模塊,然后獲取列名,通過訪問數據窗口的屬性,組合成排序字符串,即可實現排序功能。

一、創建一個Tabular類型的數據窗口對象,選擇Exteral數據源,取名為:d_columns_dddw。

該數據窗口作為下拉子數據窗口用于存儲要排序的表的列號和字段名。

表1 d_columns_dddw的各字段

二、創建一個Tabular類型的數據窗口對象,選擇Exteral數據源,取名為d_sort。

該數據窗口對象的外觀如圖1所示。該數據窗口對象用于輸入要排序的表的字段名、優先級和升降序,各字段如表2所示。

表2 d_sort的各字段

圖1 d_sort的設計效果

(一)grade字段屬性。Style Type:Edit。

(二)column_number字段屬性。Style Type:DropDownDW;DataWindow:d_columnsdddw;Display Column:column_name;Data Column:column_number。

(三)sort_order字段屬性。Style Type:CheckBox;Text:升序;Data Value for on:A;Data Value for off:D。

三、創建一個UserObject用戶對象數據窗口uo_dw_sort。

Standard Visual;Types:datawindow;DataObject:d_sort,如圖2所示:

圖2 用戶對象數據窗口uo_dw_sort

四、創建一個response類型的窗口w_sort),添加相關控件。

具體如表3和圖3所示,功能是設置組合排序的條件,得出排序結果。數據窗口控件dw_sort的創建方法是:單擊工具欄上的UserObject圖標,在彈出式窗口中選擇已經創建好的uo_dw_sort對象。

表3 窗口w_sort上的控件

圖3 排序條件設置窗口w_sort

(一)聲明窗口w_sort的實例變量

Private:DataWindow idw_ToSortOn //用來接收傳遞過來的要排序的數據窗口對象

(二)數據窗口dw_sort中的事件函數

通過數據窗口dw_sort的用戶自定義事件來實現對排序條件的組合設置,主要有增加、插入、刪除記錄和高亮顯示記錄行等功能。

1.constructor事件。

This.SetRowFocusIndicator(Hand!) //記錄行前面設置為手形

2.用戶自定義事件。

(1)ue_addrow()。功能:在記錄末增加一行過濾條件記錄,并調用wf_setgrade()設置優先級。腳本略。

(2)ue_insertrow()。功能:在當前行之后插入一行記錄,并調用wf_setgrade()設置優先級。腳本略。

(3)ue_deleterow()。功能:刪除一行過濾條件,并調用wf_setgrade()設置優先級。腳本略。

(4)ue_dddw_mousemove()。功能:捕捉下拉數據窗口事件,高亮顯示鼠標經過的記錄行。腳本略。

(三)窗口w_ sort中的事件函數

1.wf_strip()。功能:用空格替換特殊字符,去掉非法字符。

//Function Name:wf_strip;Access:private;Return Type:None

//Argument Name:as_arg;Argument Type:string; Pass By:reference

Integer li_length,li_pos

li_length=Len(as_arg)

Forli_pos=1 To li_length

Choose Case Mid(as_arg,li_pos,1)

Case ?謖~t?謖,?謖~r?謖,?謖~n?謖,?謖"?謖

as_arg=Trim(Replace(as_arg,li_pos,1,?謖))

End Choose

Next

2.wf_buildsortstring()。功能:構造排序表達式字符串。

//Function Name:wf_buildsortstring;Access:private;Return Type:string

String ls_colname,ls_order,ls_expression

Integer li_i,li_rowcount

Long ll_columnno

dw_sort.AcceptText() //接收數據窗口改變

li_rowcount=dw_sort.RowCount() //獲取記錄行的總數

For li_i=1 To li_rowcount

ll_columnno=dw_sort.GetItemNumber(li_i,?謖column_number?謖) //獲取列號

If IsNull(ll_columnno) Then

Continue;

Else

ls_colname=?謖#?謖+String(ll_columnno) //獲取列名

ls_order=dw_sort.GetItemString(li_i,?謖sort_order?謖) //獲取排序類型(升序A,降序D)

End If

//組合排序表達式字符串

If Trim(ls_colname)<>?謖?謖 Then ls_expression=ls_expression + ls_colname + ?謖 ?謖 +ls_order+ ?謖 ?謖

Next

Return ls_expression

3.wf_setgrade()。功能:設置字段排序的優先級別。

//Function Name:wf_setgrade;Access:private;Return Type:None

Long ll_row,ll_i

ll_row=dw_sort.RowCount() //總行數,即排序的條件個數

If ll_row>0 Then

dw_sort.SetRedraw(False)

For ll_i=1 To ll_row

dw_sort.SetItem(ll_i,1,ll_i) //按順序設置優先級

Next

dw_sort.SetRedraw(True)

End If

4.窗口open事件。功能:初始化數據窗口dw_sort。

Integer li_columncount,li_columnindex //數據窗口的總列數和列的序號

String ls_column,ls_display //下拉子數據窗口的列名和顯示名

Long ll_row

Pointer lp_oldpointer

DataWindowChild ldwc_columns

idw_ToSortOn=Message.PowerObjectParm //獲取要排序的數據窗口對象

lp_oldpointer=SetPointer(HourGlass!)

dw_sort.SetRedraw(False)

li_columncount=Integer(idw_ToSortOn.Describe(?謖DataWindow.Column.Count?謖)) //數據窗口列數

dw_sort.GetChild(?謖column_number?謖,ldwc_columns) //獲取下拉子數據窗口

//把要排序的數據窗口的列號和列名填充到下拉子數據窗口

For li_columnindex=1 To li_columncount

ls_column=idw_ToSortOn.Describe(?謖#?謖+String(li_columnin-

dex)+?謖.Name?謖) //字段名

ls_display=idw_ToSortOn.Describe(ls_column+?謖_t.Text?謖) //顯示名

If ls_display<>?謖!?謖 Then

wf_strip(ls_display) //去掉非法字符

ll_row=ldwc_columns.InsertRow(0) //在下拉子數據窗口中增加一條記錄

ldwc_columns.SetItem(ll_row,?謖column_number?謖,li_columnindex) //填充列號

ldwc_columns.SetItem(ll_row,?謖column_name?謖,ls_display) //填充列名

End If

Next

dw_sort.Event ue_addrow()

dw_sort.SetRedraw(True)

SetPointer(lp_oldpointer)

(四)窗口w_ sort中的按鈕控件

1.cb_add(增加):dw_sort.Event ue_addrow()

2.cb_insert(插入):dw_sort.Event ue_insertrow()

3.cb_delete(刪除):dw_sort.Event ue_deleterow()

4.cb_ok(確定):

String ls_sortstring

Pointer lp_oldpointer

ls_sortstring=wf_buildsortstring() //獲取排序字符串

lp_oldpointer=SetPointer(HourGlass!)

If ls_sortstring=?謖!?謖 Then ls_sortstring=?謖?謖

//對數據窗口進行排序

idw_ToSortOn.SetSort(ls_sortstring)

idw_ToSortOn.SetRedraw(False)

idw_ToSortOn.Sort()

idw_ToSortOn.SetRedraw(True)

SetPointer(lp_oldpointer)

Close(Parent)

5.cb_cancel(取消):Close(Parent)。關閉排序窗口。

(五)排序模塊的調用方法

如果要排序的數據窗口為dw_1,只要在排序按鈕的clicked事件中添加代碼“OpenWithParm(w_ sort,dw_1)”就可以實現排序,運行效果如圖4所示。

圖4 調用排序模塊

結語

通用排序模塊的設計可以節約系統開發的時間,提高開發效率,更好地滿足用戶要求對數據進行靈活多變的排序的要求。模塊可以單獨存儲到一個PBL文件當中,如果在應用程序的開發過程中需用到某些功能,只要把PBL文件加到庫的搜索路徑當中即可。

參考文獻:

[1]陳永強,李茜.SQL Server 2005+PowerBuilder 11高級開發指南.清華大學出版社,2008,第一版.

[2]樊金生,張翠肖. PowerBuilder 10.5實用教程.科學出版社,2009,第一版.

[3]向隅.新編PowerBuilder程序設計實例教程.清華大學出版,2009,第一版.

猜你喜歡
排序設置功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
排序不等式
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
恐怖排序
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
關于非首都功能疏解的幾點思考
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 欧美性色综合网| 久热精品免费| av手机版在线播放| 国产在线一区二区视频| 成年片色大黄全免费网站久久| 成人自拍视频在线观看| 免费在线国产一区二区三区精品| 六月婷婷精品视频在线观看| 秋霞午夜国产精品成人片| 人与鲁专区| 午夜限制老子影院888| 久热re国产手机在线观看| 色妞www精品视频一级下载| 日本妇乱子伦视频| 精品色综合| 制服无码网站| a级毛片免费看| 国产精品自拍露脸视频| 青青国产视频| 午夜a视频| 日韩精品亚洲一区中文字幕| 91青草视频| 热久久这里是精品6免费观看| 免费人欧美成又黄又爽的视频| 亚洲国产成人自拍| 思思热在线视频精品| 黄色网站在线观看无码| 久久久久亚洲精品成人网| 天天激情综合| 国产超碰一区二区三区| 国产91线观看| 高清不卡一区二区三区香蕉| 亚洲男人在线| 黄色网页在线播放| 波多野结衣在线一区二区| 欧美亚洲第一页| 国产亚洲精| AV熟女乱| 国产精品一区在线麻豆| 美美女高清毛片视频免费观看| 欧美在线三级| 日韩精品成人网页视频在线| 午夜啪啪福利| 国产精品久久久精品三级| 国产人成在线观看| 久久综合一个色综合网| 欧美精品亚洲精品日韩专| 免费高清自慰一区二区三区| 成·人免费午夜无码视频在线观看| 色哟哟精品无码网站在线播放视频| 精品三级网站| www.国产福利| 国产黄视频网站| 午夜视频免费一区二区在线看| 狼友av永久网站免费观看| 一本久道久久综合多人| 91午夜福利在线观看精品| 日韩成人午夜| 亚洲国产欧美国产综合久久 | 久久狠狠色噜噜狠狠狠狠97视色 | 欧美成人aⅴ| 亚洲国产精品VA在线看黑人| 超清无码一区二区三区| 天堂av综合网| 亚洲成肉网| 午夜限制老子影院888| 91青青在线视频| 91福利免费视频| 国产精品网址你懂的| 亚洲免费毛片| 高h视频在线| 又爽又大又光又色的午夜视频| 午夜影院a级片| 欧美日韩福利| 毛片久久久| 欧美午夜精品| 超碰免费91| 色综合色国产热无码一| 国产成人a毛片在线| 老色鬼久久亚洲AV综合| 成人在线亚洲| 中文字幕久久亚洲一区|