2016-12-17 26 views
0

応答ウィンドウの親ウィンドウから変数を取得しようとしています(両方のウィンドウは継承されていますが、ソースコードはありません)。私はすべての親変数、オブジェクト、コントロールなどをトラフすることができますが、変数を読み取ることができません。このコードは "ok event"用です。助けをお待ちしています。Powerbuilder 12.5親ウィンドウ変数を取得

window lw_active, w_parentwindow 
string ls_winname, ls_libname, ls_wintitle 
ClassDefinition cd_windef 


w_parentwindow = this.ParentWindow() 
lw_active = w_parentwindow.GetFirstSheet() 

if isvalid(lw_active) = True then 
     ls_winname = lw_active.classname() 

     cd_windef = FindClassDefinition(ls_winname) 
     ls_libname = cd_windef.LibraryName 
     ls_wintitle = lw_active.title 

     messagebox(ls_winname, ls_libname+'~r~n~r~n'+ls_wintitle, Information!)  

     string s, lineend 
integer li 
VariableDefinition vard 
lineend = "~r~n" 
FOR li = 1 to UpperBound(cd_windef.VariableList) 
    vard = cd_windef.VariableList[li] 
    s = s + vard.Name + lineend 
NEXT 
messagebox('s',s) 

end if 

答えて

1
  1. アクセスしたいウィンドウを継承。あなたの子孫ウィンドウw_mineと祖先w_theirsと呼ぶでしょう。
  2. w_mineにアクセサメソッドを追加します。プライベートでないw_theirsのものを参照することができます。
  3. w_mine型の変数を宣言します。
  4. ウィンドウ参照をw_mineに割り当てます。 w_mineに追加したメソッドを呼び出すことができます。
  5. w_mineを破壊しないでください。範囲外にするだけです。 PBでは、変数nullを設定する必要はなく、何か特別なことをする必要はありません。ウィンドウを閉じると参照が無効になることに注意してください。参照を保持するためにインスタンス変数を使用しないでください。
+0

時間をとっていただきありがとうございます。私はかなり初心者のプログラマーなので、すべての点が私には分かりません。私は親から子ウィンドウのトラフの親window.tagに変数を伝えることができたことに言及しなかった。このような何か:。 ウィンドウ\t lw_parentwindow \t \t \t \t lw_parentwindow =スーパー:: ParentWindow()getfirstsheet()\t \t \t ll_orderid = 12月(lw_parentwindow.tag) – DAMS

+0

私はポストの途中で切ってしまった、申し訳ありません。 続行: 「祖先メソッドをw_mineに追加する」でもう少し詳しく説明できますか? これを行う方法がわかりません。 w_mine型はどこで宣言しますか? w_mine(子ウィンドウ)で? – DAMS

関連する問題