Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание комронент в цыкле 
V
    Опции темы
Edd
Дата 30.3.2010, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Добрый день!

Необходимо в Panel создать неопределённое количество textbox и radiobutton, какой имнно компанент нужно изспользовать описанно в XML. 
Как это сделать? smile 

XML читается следующим образом:
Код

for each (var t:XML in dataXML.children()) 
{
                 for each (var type:XML in t.children()) 
                 {
                        trace("tag name: "+type.name()+" tag content "+type.text());
                 }
}


Панель:
Код

<mx:Panel resizeEffect="Resize" width="200" height="279" layout="absolute" title="types" id="panelTypes"  x="0" y="333">
        
</mx:Panel>

PM MAIL   Вверх
SoWa
Дата 1.4.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



Да легко!
В том же цикле напиши обработчик, узнающий что за компоненту надо вставить.
Потом напиши функцию, формирующую компоненту, вызови её, а потом сделай addChild
Код

public function CreateTxBox():TextBox{
var temp:TextBox = new TextBox;
temp.id = 
temp.x =
temp.y =
temp.width =
temp.height = 
return temp;
}

А вот это в цикл:
var temp = CreateTxBox();
panelTypes.addChild(temp);



--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Edd
Дата 4.4.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Спасибо, SoWa.
Я, правда, решил немного другим способом. Использовал Repeater и ставил соответствуюший статус Visible компонентам.
А дальше использовал уже массив компонент для обработки.

Код

for each (var question:XML in tests.children()) 
{
    if (question.name()=="questionText") Question= question.text();
    
    else if (question.name()=="QuestionType") QuestionType= question.text();
    else if (question.name()=="AnswerType") AnswerType= question.text();
    
    else if (question.name()=="Variant1") {QuestionVar1= question.text(); if (QuestionVar1.length>0) QuestionVar1Show=true;}
    else if (question.name()=="Variant2") {QuestionVar2= question.text(); if (QuestionVar2.length>0) QuestionVar2Show=true;}
    else if (question.name()=="Variant3") {QuestionVar3= question.text(); if (QuestionVar3.length>0) QuestionVar3Show=true;}
    else if (question.name()=="Variant4") {QuestionVar4= question.text(); if (QuestionVar4.length>0) QuestionVar4Show=true;}
}
Questions_count++;

if (AnswerType==1)
{
    QuestionVar1Show=QuestionVar2Show=QuestionVar3Show=QuestionVar4Show=false;
    txtVal1Show=true; txtVal0Show=false;
    if (QuestionType==3) txtVal0Show=true;
}
if (AnswerType==3){txtVal0Show=txtVal1Show=false;}

myQuestions.push({Questions:Question, txtVal0Shows:txtVal0Show ,txtVal1Shows:txtVal1Show
, QuestionTypes:QuestionType, AnswerTypes:AnswerType
, Var1:QuestionVar1, Var2:QuestionVar2, Var3:QuestionVar3, Var4:QuestionVar4
,var1Show:QuestionVar1Show, var2Show:QuestionVar2Show, var3Show:QuestionVar3Show, var4Show:QuestionVar4Show });    

RepeaterQuestionsList.dataProvider=myQuestionCollection;
    

Код

<mx:ArrayCollection id="myQuestionCollection" source="{myQuestions}"/>
<mx:Panel x="22" y="75" width="587" height="309" layout="absolute" title="Questions">
         <mx:VBox width="537" x="10" >        
            <mx:Repeater id="RepeaterQuestionsList" dataProvider="{myQuestionCollection}">
                <mx:Panel resizeEffect="Resize" width="537" height="89" layout="absolute" id="panelTournamentQuestion"  horizontalAlign="center" alpha="1.0" borderColor="#CACACA" headerHeight="0" borderThicknessLeft="0" borderThicknessRight="0" borderThicknessTop="0" shadowDistance="0" shadowDirection="center" cornerRadius="0">
                 <mx:Text text="{RepeaterQuestionsList.currentIndex+1}) {RepeaterQuestionsList.currentItem.Questions}"  x="10" y="10" width="316" height="40" fontSize="12"/>
                 <mx:TextInput id="txtVal0" x="334" y="10" width="54" visible="{RepeaterQuestionsList.currentItem.txtVal0Shows}" maxChars="4" />
                 <mx:Label x="389" y="12" text="-" id="lblQuestionBetweentxt"  visible="{RepeaterQuestionsList.currentItem.txtVal0Shows}" />
                 <mx:TextInput id="txtVal1" x="399" y="10" width="54"  visible="{RepeaterQuestionsList.currentItem.txtVal1Shows}" maxChars="4" />
                 <mx:RadioButton id="rbQuestionVar1" x="334" y="0" label="{RepeaterQuestionsList.currentItem.Var1}"  groupName="QuestionGroup{RepeaterQuestionsList.currentIndex}"  visible="{RepeaterQuestionsList.currentItem.var1Show}"/>
                 <mx:RadioButton id="rbQuestionVar2" x="334" y="20" label="{RepeaterQuestionsList.currentItem.Var2}"  groupName="QuestionGroup{RepeaterQuestionsList.currentIndex}" visible="{RepeaterQuestionsList.currentItem.var2Show}"/>
                 <mx:RadioButton id="rbQuestionVar3" x="334" y="40" label="{RepeaterQuestionsList.currentItem.Var3}"  groupName="QuestionGroup{RepeaterQuestionsList.currentIndex}" visible="{RepeaterQuestionsList.currentItem.var3Show}"/>
                 <mx:RadioButton id="rbQuestionVar4" x="334" y="60" label="{RepeaterQuestionsList.currentItem.Var4}"  groupName="QuestionGroup{RepeaterQuestionsList.currentIndex}" visible="{RepeaterQuestionsList.currentItem.var4Show}"/>                 
                </mx:Panel>                 
            </mx:Repeater>
            </mx:VBox>      
     </mx:Panel>

PM MAIL   Вверх
SoWa
Дата 6.4.2010, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



Ну это же не оптимально smile
У тебя изначально в приложении вон сколько лишнего будет храниться, да и кода больше.
Динамически-создаваемый компонент был бы лучше smile


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flex | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.