記憶體清除 ( Garbage collection )
記憶體清除在做些什麼事
在 PowerBuilder 的記憶體清除機制中,主要是檢查不再使用的物件,自動釋放出該實體 ( 物件 ) 的記憶體。當然也可以直接下 DESTROY 的指令,來強制釋放出無用的實體。
PB 發表在 痞客邦 留言(0) 人氣(1,111)
透過 DataWindow 可以很容易的展示及維護資料,為了有更好的親和介面,可不可以使得同一個欄位在不同筆資料中有不同的屬性。 1. 如果 DataWindow 的欄位屬性在每一筆資料都是一樣時,可以使用下列的設定方法: a. DataWindow Painter:以直覺的圖形化介面方式設定,直接調整成所需要的樣子就可以了。 b. <DW Control Name>.Object.<Columnname>.<property> = <value>:以程式撰寫的方式完成,在執行的過程中,動態的變更欄位屬性。 2. 如果希望 DataWindow 的欄位屬性依據實際的狀況而有不同表現時,可以使用下列的設定方法: a. DataWindow Painter:以直覺的圖形化介面方式設定。 i. 選取有這種需求的欄位。 ii. 按滑鼠右鍵後,選擇 Properties ...。 iii. 再點選 Expressions 頁籤。 iv. 在需要調整的屬性上輸入適當的條件式即可。 b. <DW Control Name>.Object.<Columnname>.<property> = <value>~t<expression>:以程式撰寫的方式完成,在執行的過程中,動態的變更欄位屬性,同時可以依條件式的設定而有不同的屬性值。 3. 條件式的設定: a. If ( <boolean>, <truevalue>, <falsevalue> ): i. 依據條件式傳回不同的屬性設定值。 ii. 當需要多個屬性設定值時,可以巢狀式的設定傳回兩個以上的屬性設定值,如:If ( <boolean>, <truevalue>, If ( <boolean>, <truevalue>, < falsevalue> ) )。 b. Case ( <column> WHEN <value1> THEN <result1> { WHEN <value2> THEN <result2> { ... } } { ELSE <resultelse> } ): i. 依據條件式傳回不同的屬性設定值,如果只使用單一欄位值作為條件式時可以使用這個函數。 c. 在 If ( ) <boolean> 中常用的函數: IsRowNew ( ):可用這個函數判斷是否為新增的資料 ( 以 Row 為單位 )。 IsRowModified ( ):可用這個函數判斷是否為更改的資料 ( 以 Row 為單位 )。 IsSelected ( ):可用這個函數判斷是否為反白的資料 ( 以 Row 為單位 )。 GetRow ( ):在 Detail Band 中資料的行號。 CurrentRow ( ):在 Detail Band 中資料使用者目前正在編輯中的行號。 Mod ( ):計算餘數,最常用在每一筆資料的顏色要交錯顯示時。 至於要展現出怎樣的畫面,就必須靠您的創意了。 本則程式技巧由飛達客工作室提供
|
|
PB 發表在 痞客邦 留言(0) 人氣(2,825)
在撰寫程式的時候,常常希望提供使用者動態的功能,當然這樣做可以增加系統的親和力;另外很重要的是可以降低使用者寫需求單來增加新功能。例如:動態變更 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. 是的,就是這麼簡單。 本則程式技巧由飛達客工作室提供 |
|
PB 發表在 痞客邦 留言(3) 人氣(1,524)