1

PopUpManagerを使用して、一連のイベントウィンドウを表示しています。

一度に1つのウィンドウしか開くことができないようにしたいのですが、条件を設定するために開いているウィンドウを追跡するコードのどこにも表示されません。ウィンドウを作成してから解放するだけだと思いますか?

ウィンドウを追加すると増加し、ウィンドウを削除すると減少するwindowCount変数について考えますが、PopupManagerはさまざまなクラスで呼び出されるため、あらゆる場所でイベントをスローし始める必要があります。私はそれを行うことができますが、もっと簡単な方法があるかどうか疑問に思っていますか?

4

2 に答える 2

3

systemManager (PopUpManagerではなく...) は、現在開いているポップアップ ウィンドウに関する情報を提供します。

ポップアップがすべてモデルの場合、' systemManager.numModalWindows 'に関心があります。

モーダル ウィンドウの数。モーダル ウィンドウでは、別のウィンドウをクリックすると、通常はそのウィンドウで FocusManager がアクティブになります。PopUpManager は、モーダル ウィンドウを作成および破棄するときに、このカウントを変更します。

それ以外の場合は、「 systemManager.popUpChildren 」を試してください:

この ISystemManager を親とする topMost (ポップアップ) ウィンドウのリスト。

ISystemManager には、アプリケーション、ポップアップ、ツールチップ、カスタム カーソルなど、さまざまな種類の子があります。popUpChildren プロパティを介して最上位のウィンドウにアクセスできます。

IChildList オブジェクトには、getChildAt() などのメソッドと numChildren などのプロパティがあります。たとえば、popUpChildren.numChildren は最上位のウィンドウの数を示し、popUpChildren.getChildAt(i) としてそれらにアクセスできます。

于 2011-04-20T06:57:18.733 に答える
2

いくつかのオプションが表示されます。

1) すべてのウィンドウをモーダルにします。ウィンドウを閉じるまでアプリケーションを使用できないようにします。これは、PopUpManagerのcreatePopUpメソッドへの引数です。おそらく、他のポップアップを作成するポップアップはありません。

2) 独自の Manager クラスを作成します。おそらく、開いているすべてのウィンドウを追跡する PopUpManager クラスの拡張です。そうすれば、すべての PopUp のソースが 1 つになり、そのように維持できます。

于 2011-04-20T02:10:16.403 に答える