カラム ID から DWObject を取得する

PowerBuilder Tips

方法

ドット表記を使用する場合、カラム 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

Tips 一覧を見る
PowerBuilder 2019 R3 日本語版リリース
PowerBuilder マイグレーション