在 PowerBuilder 中需動態遍歷 DataWindow 所有控制項 (Column、Text、Picture 等),可透過 Describe("DataWindow.Objects") 取得 Tab 分隔的名稱清單,再解析逐一處理。
string ls_obj_list, ls_obj_name[]
int li_cnt, li_pos, i
ls_obj_list = dw_1.Describe("DataWindow.Objects") // Tab 分隔字串
IF Len(ls_obj_list) > 0 THEN
li_pos = Pos(ls_obj_list, "~t")
DO WHILE li_pos > 0
i++
ls_obj_name[i] = Trim(Left(ls_obj_list, li_pos - 1))
ls_obj_list = Trim(Right(ls_obj_list, Len(ls_obj_list) - li_pos))
li_pos = Pos(ls_obj_list, "~t")
LOOP
i++
ls_obj_name[i] = ls_obj_list // 最後一個
END IF
取得名稱後,可用 Describe 查詢任意屬性:
// 取得類型
string ls_type
ls_type = dw_1.Describe(ls_obj_name[i] + ".type")
// 取得顯示格式
string ls_format
ls_format = dw_1.Describe(ls_obj_name[i] + ".format")
// 修改屬性 (需用 Modify)
dw_1.Modify(ls_obj_name[i] + ".visible=0")
| 屬性 | 說明 | 範例值 |
|---|---|---|
| type | 控制項類型 | column, text, picture, line, oval, rectangle, button, computefield |
| visible | 是否可見 | 0/1 |
| protect | 是否保護 (不可編輯) | 0/1 |
| format | 顯示格式遮罩 | #,##0.00; #,##0; yyyy-mm-dd |
| font.face | 字型名稱 | 微軟正黑體 |
| font.height | 字型大小 | -12 |
| font.weight | 粗細 | 400/700 |
| color | 前景色 | 255 (紅), 16711680 (藍) |
| background.color | 背景色 | 16777215 (白) |
Describe 僅能讀取,修改需用 Modify。