カラム ID から DWObject を取得する
2021/01/04
方法
ドット表記を使用する場合、カラム ID から動的に DWObject を取得することはできません。 そのため下記のように CHOOSE CASE 文などで ID を判定して取得します。
【例】
カラム値設定処理
long ll_row integer li_column dwobject ldwo string ls_value ll_row = 5 // 5 行目 li_column = 3 // カラムID 3 ls_value = "TEST" // 設定する値 // カラムに値を設定 dw_1.SetItem(ll_row, li_column, ls_value) // カラムIDから DWObject を設定 CHOOSE CASE li_column CASE 1 ldwo = dw_1.object.#1 CASE 2 ldwo = dw_1.object.#2 CASE 3 ldwo = dw_1.object.#3 CASE 4 ldwo = dw_1.object.#4 CASE 5 ldwo = dw_1.object.#5 ・ ・ ・ END CHOOSE // 値を設定したカラムに対して SetItem イベントを呼び出す dw_1.Event ItemChanged(ll_row, ldwo, ls_value)
また、下記のように Constructor イベント等で画面オープン時にあらかじめインスタンス変数配列に DWObject を格納する方法もあります。
【例】
インスタンス変数の宣言
dwobject idwo[] // データウィンドウのカラム
データウィンドウコントロールの Constructor イベント
integer li_column, li_count li_count = Integer(this.object.datawindow.column.count) li_column ++ idwo[li_column] = this.object.#1 IF li_column = li_count THEN RETURN li_column ++ idwo[li_column] = this.object.#2 IF li_column = li_count THEN RETURN li_column ++ idwo[li_column] = this.object.#3 IF li_column = li_count THEN RETURN li_column ++ idwo[li_column] = this.object.#4 IF li_column = li_count THEN RETURN li_column ++ idwo[li_column] = this.object.#5 IF li_column = li_count THEN RETURN ・ ・ ・
カラム値設定処理
long ll_row integer li_column string ls_value ll_row = 5 // 5 行目 li_column = 3 // カラムID 3 ls_value = "TEST" // 設定する値 // カラムに値を設定 dw_1.SetItem(ll_row, li_column, ls_value) // 値を設定したカラムに対して SetItem イベントを呼び出す dw_1.Event ItemChanged(ll_row, idwo[li_column], ls_value)
Tips情報
プロダクト :PowerBuilder
バージョン :2017R3