Flex 4.5 добавляет несколько компонентов в контейнер во время выполнения - PullRequest
0 голосов
/ 23 марта 2012

Я хочу иметь возможность добавить несколько детей в группу.

Я хочу добавить все это сразу за один раз в "qItems"

 <s:HGroup width="100%" height="100%">
  <s:Group width="100" height="100%">
   <s:TextInput width="100%" editable="false"/>
  </s:Group>
  <s:Group width="100%" height="100%">
   <s:TextInput width="100%"/>
  </s:Group>
 </s:HGroup>

Я могу получить только пропускодин ребенок

<fx:Script>
  <![CDATA[

protected function addNewGroup():void
{
 var hg:HGroup = new HGroup();
 hg.width=100 + "%";
 hg.height=100 + "%";

 qItems.addElement(hg);
}

  ]]>
</fx:Script>

<s:Button label="Add Item" click="addNewGroup()"/>
<s:VGroup id="qItems" width="100%" height="22"/>

Я не знаю, как добавить более одного элемента за раз.

Спасибо

ОБНОВЛЕНИЕ

У меня естьэто до сих пор .... В поисках лучшего пути

public var hg:HGroup;
        public var g1:Group;
        public var g2:Group;
        public var g3:Group;
        public var g4:Group;
        public var g5:Group;
        public var g6:Group;
        public var ti1:TextInput;
        public var ti2:TextInput;
        public var ti3:TextInput;
        public var ti4:TextInput;
        public var ti5:TextInput;
        public var ti6:TextInput;

        protected function addNewGroup():void
        {
            hg = new HGroup();
            hg.width=100 + "%";
            hg.height=22;

            g1 = new Group();
            g1.width=100;
            g1.height=100 + "%";
            ti1 = new TextInput();
            ti1.width=100 + "%";
            ti1.editable=false;

            g2 = new Group();
            g2.width=100 + "%";
            g2.height=100 + "%";
            ti2 = new TextInput();
            ti2.width=100 + "%";

            g3 = new Group();
            g3.width=100;
            g3.height=100 + "%";            
            ti3 = new TextInput();
            ti3.width=100 + "%";

            g4 = new Group();
            g4.width=100;
            g4.height=100 + "%";            
            ti4 = new TextInput();
            ti4.width=100 + "%";

            g5 = new Group();
            g5.width=100;
            g5.height=100 + "%";        
            ti5 = new TextInput();
            ti5.width=100 + "%";

            g6 = new Group();
            g6.width=100;
            g6.height=100 + "%";            
            ti6 = new TextInput();
            ti6.width=100 + "%";

            qItems.addElement(hg);
            hg.addElement(g1);
            g1.addElement(ti1);
            hg.addElement(g2);
            g2.addElement(ti2);
            hg.addElement(g3);
            g3.addElement(ti3);
            hg.addElement(g4);
            g4.addElement(ti4);
            hg.addElement(g5);
            g5.addElement(ti5);
            hg.addElement(g6);
            g6.addElement(ti6);

1 Ответ

1 голос
/ 20 июня 2014

Подход, который я выбрал, состоял в том, чтобы добавить объекты в коллекцию массивов, затем выполнить для каждого цикла через эту коллекцию и добавить элемент в родительский контейнер из цикла.

например:

for each (var visualElement:Object in CollectionOfObjects){ 
    var newWrappingFormItem:WrappingFormItem = new WrappingFormItem();
    newWrappingFormItem.maxLabelWidth = 100;
    newWrappingFormItem.wrapLabel = true;    
    newWrappingFormItem.label = "Label Name";
    newWrappingFormItem.addElement(visualElement);
    parentContainer.addChild(newWrappingFormItem);
}

В этом примере используется оберточная форма Item, но вы можете использовать ту же логику для создания других элементов компонента.

...