子ウィンドウから呼び出し元の親ウィンドウを処理する

PowerBuilder Tips

方法

複数の異なる親ウィンドウから共通の子ウィンドウを呼び出した後、子ウィンドウから呼び出し元の親ウィンドウに対して処理を実行するには、呼び出し元の親ウィンドウオブジェクトを引数として子ウィンドウに渡すことで処理が可能です。

【例】w_parent から呼び出された子ウィンドウ w_child から w_parent のデータウィンドウにデータをセットする。

以下のメンバーを持つ ”str_parent” 構造体を作成

変数名コメント
windowstr_win親ウィンドウ
datawindowstr_dw親ウィンドウに配置されたデータウィンドウ

データウィンドウとコマンドボタンが配置された “w_parent” とデータウィンドウとコマンドボタンが配置された “w_child” ウィンドウを作成

※ウィンドウの種類が “Child!” の場合、ParentWindow() 関数を使用して親ウィンドウを取得することができるため、引数に設定せずに w_child の Open イベントで取得することも可能です。

w_parent に配置されたコマンドボタンの Clicked イベント

str_parent lstr_parent                 //構造体変数の宣言
lstr_parent.str_win = Parent
lstr_parent.str_dw = dw_1

OpenWithParm( w_child, lstr_parent )    // 構造体を引数に指定して子ウィンドウを開く

w_child の Instance Variables

window iwin_parent
datawindow idw_parent

w_child の Open イベント

str_parent lstr_parent                // 構造体変数の宣言
lstr_parent = message.PowerObjectParm    // 引数を取得

// 構造体メンバ(親ウィンドウとそのデータウィンドウ変数)を取得
iwin_parent = lstr_parent.str_win
idw_parent = lstr_parent.str_dw
dw_1.SetTransObject( SQLCA )         // データを取得
dw_1.Retrieve();

w_child に配置されたコマンドボタンの Clicked イベント

long ll_row

ll_row = dw_1.GetRow()

idw_parent.InsertRow( 1 )
idw_parent.SetItem( 1, 1, dw_1.GetItemNumber( ll_row, 1 ))
idw_parent.SetItem( 1, 2, dw_1.GetItemString( ll_row, 2 ))
idw_parent.SetItem( 1, 3, dw_1.GetItemNumber( ll_row, 3 ))

この例では、w_child のデータウィンドウにはデータベースからデータを取得する処理となっています。

 

Tips情報

プロダクト :PowerBuilder

バージョン :2017R3

Tips 一覧を見る
PowerBuilder マイグレーション