Unfortunately it didn't work, I get an error saying I am trying to implicitly coerce a type not defined in Display Object.
be well, hoyt --- In [email protected], Lee <[EMAIL PROTECTED]> wrote: > > 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 >

