2

現在、PowerBuilder アプリケーションを開発していますが、各ウィンドウに「ParentWindow」機能があることに気付きました。ただし、「ChildWindows」などはないようです。

残念ながら、sybase.com のドキュメントには、これらの基本クラスはドキュメント化されていないと書かれているだけです。たぶん、誰かがなんらかの反射を使用して、とにかくそれを理解しましたか?

私がやりたいこと (これが、PowerObject や WindowObject などの一般的な基本クラスの API に興味がある理由です) は、すべての GUI 要素 (ウィンドウ、テーブル、ボタン、チェック ボックスなど) を再帰的に反復処理することです。 PowerBuilder 11.0 で PowerScript を使用します。これを行う方法を知っている人はいますか(これが可能かどうか)?

4

1 に答える 1

4

PowerObject または WindowObject を含む任意のシステム オブジェクトの API (関数、プロパティなど) の場合:

  • オブジェクト ブラウザを開きます (PowerBar ツールバーのアイコン、またはそれ以降のバージョンの PB の [ツール] メニュー項目の下にあるアイコン)。
  • [システム] タブに移動します
  • (必須ではありませんが、ボーナス ポイントとして) 左ペインを右クリックし、メニューから [階層の表示] を選択します。
  • 左ペインで問題のオブジェクトを選択します
  • 右側のペインで [Properties]、[Events]、または [Functions] ヘッダーをダブルクリックして、リストを展開します。

すべての GUI 要素を反復する場合、最も簡単な方法は、すべてのウィンドウに共通の祖先の Open および Close イベントでウィンドウ ハンドルのリストを維持することです (すべてのウィンドウに共通の祖先があります ね? ) そしてリストを調べ、Control[] 配列を再帰します (UserObjects、Tabs、および TabPages には Windows と同様に Control[] 配列があることに注意してください)。プロセスに属するすべてのウィンドウ ハンドルを取得するために Windows API をいじるつもりでない限り、このリストを自分で管理しない限り、このリストを取得する簡単な方法はありません。

幸運を、

テリー。

于 2009-08-07T16:18:53.027 に答える