0

hboxレイアウトでは、コンポーネントを非表示にすると、他のすべてのコンポーネントが再配置されます。

私が次のレイアウトを持っていると考えてください、

hbox1:

   combo1  combo2 combo3 combo4

コンボ1を非表示にすると、レイアウトは次のように再調整されます。

hbox2:

  combo2 combo3 combo4

ここで、combo2はcombo1の場所に再配置されます。

しかし、私はhbox1のようにコンポーネントの位置を保持するのが好きです。

何か案は?

4

3 に答える 3

2

1 *おそらく2つのネストされたコントロールを作成し、外側のコントロールの幅を一定に保ちながら内側のコントロールを非表示にする必要があります。このメソッドはオーバーヘッドを追加しますが、
2*extjsから少し離れて実行できる他のことはdomを操作します。extjsは相互に複数のdivを作成するため、内部divの1つに手動でアクセスして非表示にできます
。3* extjsでhide()関数を使用しないでください。
ただし、divコンポーネントのスタイルを変更する特別な非表示関数を作成してください。 divのすべての可能な色を非表示にして、透明または背景の色に設定します。添付されているすべてのイベントが機能するというだけで、それでも隠されます。
4 *または、コンポーネントを非表示にするのではなくマスクすることもできます。これにより、ユーザーはこの特定のアイテムが無効になっていることを認識し、ユーザーはそれぞれのコンポーネントと対話することもできなくなります。

于 2012-08-30T07:25:00.503 に答える
1

(1)非表示のコンポーネントがHBOXレイアウトのレイアウト/サイズ設定に参加できるようにするために最近実装したソリューションは、次のとおりです。

でコンポーネントを非表示にする代わりに、を使用してコンポーネントをExt.Component#hide無効にしExt.Component#disableます。さらに、cls各コンポーネントにプロパティを構成しますghost

次に、CSSルールを定義します

ghost.x-item-disabled {
    visibility: hidden;
}

バックグラウンド:

  • コンポーネントはExtレイアウトエンジンに「非表示」とは見なされないため、サイズ設定/レイアウトの対象と見なされます。
  • ブラウザは表示された表現をレンダリングしませんが、ボックスモデルでは要素がスペースを占有します。これがとの主な違いdisplay:blockですvisibility:hidden
  • コンポーネントはdisabledであるため、ユーザーの操作には応答しません。

(2)hideModeこれらのコンポーネントをに設定してみてくださいvisibilityhttp://docs.sencha.com/ext-js/4-1/#!/api/Ext.AbstractComponent-cfg-hideModeを参照してください。

これは、最初にすべてのアイテムが表示された状態でツールバーをレンダリングしてから、個々のアイテムを非表示にした場合に機能する可能性があります。ただし、実際には、まったく機能しないか、非常に限られたシナリオで機能することを期待しています。(1)を使用することをお勧めします。

于 2012-08-30T15:06:10.423 に答える
0

回答ありがとうございます。私は、domを次のように非表示にすることで達成しました。

component.el.dom.hidden=true;  //Hides the text field of combo
component.el.dom.nextSibiling.hidden = true; // hides the drop down imageof combo
于 2012-08-30T17:39:29.957 に答える