Speaking about Communicating between Components. In reality 
everything is custom, specifically custom renderers. What I have been 
having problem with is to how to populate properties of a custom 
component and how to execute its methods before the component is 
added to a parent container, another words before this:
Column.itemRenderer = customRenderer;


--- In flexcoders@yahoogroups.com, "Tracy Spratt" <[EMAIL PROTECTED]> wrote:
>
> There are many ways.  Below is a document I started, but have not
> polished, but should be of some use.
> 
> Tracy
> 
>  
> 
> Communicating between Components:
> 
>  
> 
> Note: for "loose coupling" use events.  But that is another topic.
> 
>  
> 
> A non-trivial flex application is "component" based. While all of 
the
> built-in controls are components, the question of communicating 
between
> components most often arises when you are using a custom component. 
A
> custom component, whether implemented in mxml or ActionScript, has 
its
> own "scope". Within that component (Application is a component 
too!),
> all sibling child controls share the same scope, so you can refer to
> controls by their id.  If the controls(components) have public
> properties or methods, you can reference those members directly 
through
> the id:
> 
>             <mx:TextInput id="textinput1" text="test value" .../>
> 
>             <mx:Text id="text1" ... text="{textinput1.text}" .../>
> 
>  
> 
> Ok, so far, its a "duh" right?
> 
>  
> 
> When you use custom components in a Flex app, at run time they make 
a
> document object model hierarchy (DOM).  Each subcomponent has its 
own
> scope and code within that component can't *directly* reference the
> member properties or methods of its sibling subcomponents.
> 
>  
> 
> So again, within a component, code can reference children  
directly, as
> in the example above.  But there are two other cases inherent in a
> hierarchy.  You might want to reference "up", to get to public 
members
> of the parent, grandparent, etc, or 'down", to get to 
a "grandchild".
> 
>  
> 
> Accessing members in the parent:
> 
> On an ordinary component DOM, you can reference the parent component
> using the .parent property.  Say that a control with id="textinput1"
> exists in the parent of the current component.  then you could do:
> 
>             <mx:Text id="text1" ... text="{parent.textinput1.text}"
> .../>
> 
>  
> 
> Accessing members in the main application:
> 
> Components can be nested, sometimes very deeply.  If the reference 
you
> want is all the way at the top-level, main application (the one 
with the
> <mx:Application> tag), you could do
> {parent.parent.parent.textinput1.text}, but you would have to count 
the
> component levels just right.  Instead, you can use
> Application.application to get to that scope:
> 
>             <mx:Text id="text1" ...
> text="{Application.application.textinput1.text}" .../>
> 
> You can shoretn this style of reference by importing
> mx.core.Application, and assigning Application.application to a
> variable, like _app, the doing (_app.textinput1.text)
> 
>  
> 
> Accessing components of a child component ("grandchildren"):
> 
> Say that in this case, a child component has the TextInput control 
you
> want to reference.  First, make sure the child component has an id:
> 
>             <myComp:MyCustomComp id="mycc1" .../>
> 
> Then, in the same scope (the same component/file that 
contains "mycc1"
> above) you can say:
> 
>             <mx:Text id="text1" ... 
text="{mycc1.textinput1.text}" .../>
> 
>  
> 
> Accessing a nested component:
> 
> As mentioned above you can go "up" the hierarchy using
> "parent.parent...".  You can also go "down" the hirearchy using id
> references:
> 
>             <mx:Text id="text1" ...
> text="{mycc1.mycc11.mycc.12.textinput1.text}" .../>
> 
>  
> 
> Additional notes:
> 
> If you are using SWFLoader to load an entire Application, you can
> reference the immediate parent application using "parentDocument".  
You
> can also use Application.application to reach the main app, as shown
> above.
> 
>  
> 
> Accessing members of an application loaded by SWFLoader is a bit 
more
> complicated.  See the example here:
> 
> http://www.cflex.net/showFileDetails.cfm?ObjectID=690
> 
>  
> 
>  
> 
> ________________________________
> 
> From: flexcoders@yahoogroups.com 
[mailto:[EMAIL PROTECTED] On
> Behalf Of Luke Vanderfluit
> Sent: Tuesday, April 22, 2008 7:08 PM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] passing parameters to components
> 
>  
> 
> Hi.
> 
> I have a flex application that gets called from an html link and is
> passed a 
> parameter. The param is personid.
> 
> I retrieve the parameter in the flex application (BrowserManager).
> So I have access to it in the main application file.
> 
> I have a number of components within the main application, that do
> server 
> requests. In some of those requests I need to pass the personid 
(that I
> have 
> retrieved from the browser url).
> 
> My question is:
> 
> What is the accepted method of passing variables (params) between
> components, 
> specifically, in this case, from parent to child component?
> 
> Thanks for your responses.
> 
> Kind regards.
> Luke.
> 
> -- 
> Luke Vanderfluit
> Analyst / Web Programmer
> e3Learning.com.au
> 08 8221 6422
>


Reply via email to