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 >