Can you extend this concept slightly for me. I have several dynamic
items to display in the view (whether they are displayed is controled
through binding and set functions) this works.

I just can figure out how to control the order that they are drawn on
the page.



--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> Are you asking about:
> 
>  
> 
> private function fAddCustomView(compClass:Class):void
> {
> var canCustView:Container = Container(new compClass());
> canCustView.label = "Custom " + 
> cbCompList.selectedItem.label;
> vsComps.addChild(canCustView);
> }
> 
> 
> 
> ...
> 
> fAddCustomView(Comp1);
> 
>  
> 
>  
> 
> ________________________________
> 
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of phall121
> Sent: Monday, June 04, 2007 12:39 PM
> To: [email protected]
> Subject: [flexcoders] Selecting which Child Components to add at runtime
> 
>  
> 
> I want to add views to a ViewStack at runtime by selecting from an 
> expanding table of Custom Components.
> 
> As the simplified code below shows, I can figure out how to add any 
> one and hard code it. But the addChild method of the ViewStack 
> seems to require that you know ahead of time which component you 
> want to add. I can not find in the docs or online a way to make 
> this dynamic.
> 
> In other words, when I define the new component view to add to the 
> view stack.... 
> {
> var canCustView:Comp1 = new Comp1();
> canCustView.label = "Custom " + cbCompList.selectedItem.label;
> vsComps.addChild(canCustView);
> }
> ...I want to choose at runtime whether to instantiate views from 
> Comp1, Comp17, or Comp53, etc.
> 
> Any ideas how to accomplish this? Thanks for your thoughts!
> 
> Here is the simplified code. 
> 
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
> <http://www.adobe.com/2006/mxml> " 
> layout="absolute"
> xmlns:comp="components.*">
> 
> <mx:Script>
> <![CDATA[
> import components.*;
> 
> private function fAddView():void
> {
> var canHardView:TestComp = new TestComp();
> canHardView.label = "Hard-Code View2";
> vsComps.addChild(canHardView);
> }
> 
> private function fAddCustomView():void
> {
> var canCustView:Comp1 = new Comp1();
> canCustView.label = "Custom " + 
> cbCompList.selectedItem.label;
> vsComps.addChild(canCustView);
> }
> 
> ]]>
> </mx:Script>
> 
> <mx:Button x="25" y="36" label="Add Hard-Coded View"
> click="fAddView()"/>
> 
> <mx:Button x="25" y="68" label="Add Custom Component"
> click="fAddCustomView()"/>
> 
> <mx:ComboBox id="cbCompList" x="203" y="67">
> <mx:dataProvider>
> <mx:Array id="arrCompList">
> <mx:Object label="Component1" data="Comp1"/>
> <mx:Object label="Component2" data="Comp2"/>
> <mx:Object label="Component3" data="Comp3"/>
> <mx:Object label="Component4" data="Comp4"/>
> <mx:Object label="Component5" data="Comp5"/>
> </mx:Array>
> </mx:dataProvider>
> </mx:ComboBox>
> 
> <mx:TabBar direction="vertical" dataProvider="{vsComps}" 
> labelField="app" y="108" x="27"/>
> 
> <mx:ViewStack id="vsComps" width="50%" height="50%"
> x="200" y="108" backgroundColor="#FFFFC9">
> 
> <mx:Canvas id="vView1" label="View1" verticalScrollPolicy="off"
> horizontalScrollPolicy="off">
> <mx:Label x="68" y="2" width="130" text="Initial View -- 
> View 1"/>
> <mx:Label id="lblViewName" x="68" y="32" width="68" 
> text="Input:"/>
> <mx:TextInput id="txtiInput" x="136" y="32"/>
> </mx:Canvas>
> </mx:ViewStack>
> 
> </mx:Application>
>


Reply via email to