Hi, I replied below =) -- Lee
----- Original Message ---- From: hoytlee2000 <[EMAIL PROTECTED]> To: [email protected] Sent: Monday, April 21, 2008 5:21:13 PM Subject: [flexcoders] how do I loop thru dynamically created UI components? Hello, I've created a button to let users add text input fields to the app so they can add additional information. That works fine, however I am at a lost on how to loop thru the newly added fields to get the input so I can send it to a php script to store in a sqlite database. I thought I could iterate through the container using the numchild attr of the enclosing container, but it returns a DisplayObject and that's where I get stuck. I don't know how to access the individual attrs (such as the .text property) of the DisplayObject. I have the label and textinput components wrapped in a hbox for formatting purposes. Also I noticed that when I try to set the id attr of the textfield explicitly the getName method returns something entirely differemt (see output after code below). Any help, tips, or web link would be appreciated. I'm stumped. Thanks, Hoyt my code: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.controls.Label; private var numCount:int = 0; // this adds text input fields, it also adds an hbox for formating private function addField():void { var newHbox:HBox = new HBox(); var newLabel:Label = new Label(); var newTextInput:TextInput = new TextInput(); numCount = numCount + 1; debugField.text = numCount + "\n"; newLabel.text = "Field " + numCount; newLabel.width = 50; newTextInput.width = 400; newHbox.id = "bbox" + numCount; debugField.text += newHbox.id + "\n"; newHbox.addChild(newLabel); newHbox.addChild(newTextInput); vbox.addChild(newHbox); } // I use this function to test output and this is where I need help. I want to // iterate through all the text input fields and read the user input private function getInfo():void { var i:int = 0; for (i = 0; i < vbox.numChildren ; i++) { var tmpName:String = "hbox" + i; var tmpObj:DisplayObject = vbox.getChildAt(i); -------- try something like this instead of the previous line (although this is kinda longer than typecasting directly) var tmpObj:HBox = vbox.getChildAt(i); var tmpTxt:TextInput = tmpObj.getChildAt(1);//because the text input is the 2nd child you added var str:String = tmpTxt.text; -------- debugField.text += "Index is: " + i + "\n"; debugField.text += tmpObj.toString() + "\n"; } } ]]> </mx:Script> <mx:Panel id="myPanel" x="460" y="10" width="513" height="297" layout="absolute"> <mx:VBox id="vbox" x="10" y="10" height="237" width="473"> <mx:HBox id="hbox0" width="528" backgroundColor="#0A7C55"> <mx:Label text="Url" width="49" color="#FFFFFF" textAlign="center" height="20"/> <mx:TextInput width="412"/> </mx:HBox> </mx:VBox> </mx:Panel> <mx:TextArea x="44" y="162" height="145" id="debugField" wordWrap="true" width="408"/> <mx:Button x="44" y="315" label="GetInfo" click="getInfo();"/> </mx:Application> This is the printout I get from the code: Index is: 0 sandbox0.myPanel.vbox.hbox0 Index is: 1 sandbox0.myPanel.vbox.HBox89 Index is: 2 sandbox0.myPanel.vbox.HBox96 Index is: 3 sandbox0.myPanel.vbox.HBox104 why is the id of the added HBox's Hbox89, HBox96, and HBox104? instead of Hbox1, Hbox2, Hbox3? ------------------------------------ -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ

