1

Powerbuilder 9.0 のポップアップ ウィンドウから値または構造を返すにはどうすればよいですか? CloseWithReturn は応答ウィンドウに対してのみ有効であるため、使用できません。Message.PowerObjectParm に値を設定すると、ポップアップ ウィンドウが閉じたときに値が null になります。ユーザーがクリックして発信者ウィンドウに戻り、行をスクロールできるように、ポップアップウィンドウを使用する必要があります。

プログラム フロー: 1) ウィンドウ A OpenWithParm 2) ウィンドウ B が開いている 3) ユーザーが両方のウィンドウと対話する 3) ユーザーがウィンドウ B を閉じる 4) ウィンドウ B が構造をウィンドウ A に戻す必要がある

4

6 に答える 6

3

ポップアップを開くときに親ウィンドウへの参照を渡し、その参照をインスタンス変数に格納することで、親の制限の「1 つのインスタンス」を回避できます。これにより、正しいバージョンの w_my_parent_window_name と対話していることも保証されます。

于 2008-10-03T04:19:57.643 に答える
2

あなたが考えている方法でこれを達成することはできません。親から開いているウィンドウは応答ウィンドウではないため、2 つが明示的にリンクされていません。

ただし、親ウィンドウにカスタム構造体のタイプのパブリック インスタンス変数を設定することで、これを実現できます。次に、子ウィンドウを閉じる前に、次のような方法で親ウィンドウに変数を明示的に設定します。

w_my_parent_window_name.istr_my_structure = lstr_my_structure

これは、インスタンス化された w_my_parent_window_name のインスタンスが 1 つしかない場合にのみ行う必要があります。

于 2008-10-03T03:28:57.423 に答える
0

問題を解決する方法は常に複数あります。質問は古いですが、別の提案をします...

ポップアップウィンドウを閉じると、親ウィンドウでカスタムイベントをトリガーできます。技術的には、親ウィンドウで任意のイベントをトリガーできますが、そのイベントの引数として構造を渡すことができるように、このために特別にカスタムイベントを作成することをお勧めします。

于 2009-05-08T17:46:41.760 に答える
0

もしあなたがPFCを使っているのなら、私の記憶が正しければ、あなたも使えるサービスがあったはずです。

于 2008-10-14T20:42:16.523 に答える
0

Message.PowerObjectParm は、オブジェクトを渡すために機能します。ポップアップが閉じられたときに NULL になる理由は、構造が自動インスタンス化され、自動破棄されるためです。それらは、宣言されている範囲内でのみ有効です。たとえば、関数内で宣言されている場合、関数の完了時に破棄されます。ポップアップのインスタンス変数の場合は、ポップアップが閉じられるときにポップアップとともに破棄されます。

Dougman が提案するように、ポップアップを閉じる前に親ウィンドウの同じ型の変数に構造をコピーして戻すか、構造の代わりにオブジェクトを使用することができます。たとえば、カスタム オブジェクトを作成し、構造体の変数と同じようにパブリック インスタンス変数を宣言します。

もちろん、オブジェクトを明示的に作成および破棄する必要があります。ポップアップによって作成されたオブジェクトは、ポップアップ自体が破棄された後でも、明示的に破棄されるまでインスタンス化されたままになります。

于 2008-10-24T19:30:08.820 に答える