子ウィンドウから呼び出し元の親ウィンドウを処理する
2021/06/11
方法
複数の異なる親ウィンドウから共通の子ウィンドウを呼び出した後、子ウィンドウから呼び出し元の親ウィンドウに対して処理を実行するには、呼び出し元の親ウィンドウオブジェクトを引数として子ウィンドウに渡すことで処理が可能です。
【例】w_parent から呼び出された子ウィンドウ w_child から w_parent のデータウィンドウにデータをセットする。
以下のメンバーを持つ ”str_parent” 構造体を作成
型 | 変数名 | コメント |
---|---|---|
window | str_win | 親ウィンドウ |
datawindow | str_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