Alright, I see. But a bit more detail. <1. Create the internal components in an override of createChildren() In the main container, HBox, right? <2. Write a setter for the data Isn't it supposed to be on internal dataGrid class since same class is used for each internal dataGrid? <3. In an override of commitProperties(), .. of an internal dataGrid class for the same reason as #2?
Thanks a lot for help. --- In [email protected], "Gordon Smith" <[EMAIL PROTECTED]> wrote: > > Why Canvas? Why not a VBox to hold the two DataGrids? > > > > Or use a single horizontally-scrolling Canvas and put the DataGrids at > the correct locations. Then you don't need any HBoxes or VBoxes. > > > > In any case, you probably don't want to create the > Canvases/VBoxes/DataGrids based on the data, because every time the data > changes you'll waste time getting rid of them and creating new ones. If > the number of columns (or an upper bound) is know, the normal process is > > > > 1. Create the internal components in an override of createChildren() > (after calling the supermethod). > > > > 2. Write a setter for the data. > > > > 3. In an override of commitProperties(), call the supermethod and then > stuff the internal components with the data. If necessary, hide extra > ones that aren't needed. > > > > Gordon Smith > > Adobe Flex SDK Team > > > > ________________________________ > > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf Of markgoldin_2000 > Sent: Wednesday, April 23, 2008 1:56 PM > To: [email protected] > Subject: [flexcoders] Re: passing parameters to components > > > > That's is going to be my next step. > Loop thru my data and add canvas from left to right. > > --- In [email protected] <mailto:flexcoders% 40yahoogroups.com> > , "Gordon Smith" <gosmith@> wrote: > > > > Why aren't you just using a horizontally-scrolling HBox? > > > > > > > > - Gordon > > > > > > > > ________________________________ > > > > From: [email protected] <mailto:flexcoders% 40yahoogroups.com> > > [mailto:[email protected] <mailto:flexcoders% 40yahoogroups.com> > ] On > > Behalf Of markgoldin_2000 > > Sent: Wednesday, April 23, 2008 1:43 PM > > To: [email protected] <mailto:flexcoders% 40yahoogroups.com> > > Subject: [flexcoders] Re: passing parameters to components > > > > > > > > What I am trying to do is bit different. > > I am trying to build a dataGrid with one row and about 15-20 > columns. > > Each column would have a custom renderer based on canvas (based > > UIComponent did not work for me). Then in canvas I will have two > > dataGrids positioned vertically. Actual usser data is going to be > > shown in internal grids. Data behind the main grid (the one with > one > > row) is unrelated to anything: I am assigning simple data to it > just > > to make things work. Building process flow here is something like > > this: > > A custom renderer (canvas with two grids) is instantiated. The I > need > > to run some code within canvas to prepare both grids showing data > > related to outer grid's column. > > I am using dataGrid for main comtainer basically to have everyting > > look nice (just like it would have been loking if it could have > been > > possible to create a dataGrid without internal grids/renderers), > > scrolling at the same time, .... > > I am open for solution how to replace main dataGrid to another > > container and fill it with canvas that carries two grids inside. > > Sorry, if it is not too clear. If I knew how to upload an image of > my > > project I would. > > > > Thanks for help. > > > > --- In [email protected] > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > 40yahoogroups.com> > > , "Gordon Smith" <gosmith@> wrote: > > > > > > Setting the itemRenderer property doesn't actually add a renderer > to > > > List (or whatever) at that moment. It simply tells the > List, "when > > you > > > need to make item renderers, use this IFactory to make the > renderer > > > instances". The List is in charge of creating item renderers, not > > you. > > > > > > > > > > > > If you really need to cause properties to be set on the item > > renderers > > > (as opposed to conveying those properties through the data items > in > > the > > > data provider), then set the itemRenderer to a ClassFactory > > instance on > > > which you've specified a 'properties' Object. The name/value > pairs > > in > > > the 'properties' Object will get set on each renderer when it is > > > created. > > > > > > > > > > > > Gordon Smith > > > > > > Adobe Flex SDK Team > > > > > > > > > > > > ________________________________ > > > > > > From: [email protected] > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > 40yahoogroups.com> > > > > [mailto:[email protected] > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > 40yahoogroups.com> > > ] On > > > Behalf Of markgoldin_2000 > > > Sent: Wednesday, April 23, 2008 5:28 AM > > > To: [email protected] <mailto:flexcoders% 40yahoogroups.com> > <mailto:flexcoders% > 40yahoogroups.com> > > > Subject: [flexcoders] Re: passing parameters to components > > > > > > > > > > > > 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 [email protected] > <mailto:flexcoders%40yahoogroups.com> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > > 40yahoogroups.com> > > > , "Tracy Spratt" <tspratt@> 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 > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690> > > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690 > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690> > > > > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690 > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690> > > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690 > <http://www.cflex.net/showFileDetails.cfm?ObjectID=690> > > > > > > > > > > > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > From: [email protected] > <mailto:flexcoders%40yahoogroups.com> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > > 40yahoogroups.com> > > > > > > [mailto:[email protected] > <mailto:flexcoders%40yahoogroups.com> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > > 40yahoogroups.com> > > > ] On > > > > Behalf Of Luke Vanderfluit > > > > Sent: Tuesday, April 22, 2008 7:08 PM > > > > To: [email protected] > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% > 40yahoogroups.com> > > <mailto:flexcoders% > > 40yahoogroups.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 > > > > > > > > > >

