在撰寫程式的時候,常常希望提供使用者動態的功能,當然這樣做可以增加系統的親和力;另外很重要的是可以降低使用者寫需求單來增加新功能。例如:動態變更 DW 中排序欄位。

1. 動態變更 DW 中排序欄位的語法:

<dw_1>.SetSort ( "<colname> <A/D> ..." ) // 設定排序欄位
<dw_1>.Sort ( ) // 執行排序作業

2. 點選 Header 的欄位來決定排序方式:

A. 在 DW 中預設值:

i. detail band 中的欄位名稱與資料庫中的欄位名稱相同。如:emp_id、dept_id。
ii. header band 中的欄位與 detail band 中的欄位相呼應,在該欄位名稱後加上 _t。如:emp_id_t、dept_id_t。

B. 在 DW::Clicked 中的程式碼:

string ls_colname, ls_sort

if row = 0 then
if right(dwo.name, 2) = "_t" then
ls_colname = dwo.name
ls_sort = left(ls_colname, len(ls_colname) - 2) + " A"
this.SetSort(ls_sort)
this.Sort()
end if
end if

C. 至於複合欄位的排序就留給讀者自己想想看了。

3. 出現系統提供的排序畫面:

A. 這個畫面就是,當在 datawindow painter 點選 Rows -> Sort ... 出現的畫面,使用者可以完全的自行調整排序欄位。缺點是畫面顯示的是英文及資料庫欄位,對於使用者而言不能直覺的使用。不過對於企圖心較強的使用者,是可以教導及學習的。

B. 只要在畫面的適當地方加個按鈕,再寫入一點程式碼就完成了。

string ls_sort

SetNull(ls_sort)

dw_1.SetSort(ls_sort)
dw_1.Sort()

C. 是的,就是這麼簡單。

本則程式技巧由飛達客工作室提供

 


arrow
arrow
    全站熱搜

    PB 發表在 痞客邦 留言(3) 人氣()