In theory, if you take the VBox and its innards and put them in their own MXML 
file it should work.

From: [email protected] [mailto:[email protected]] On Behalf 
Of Michael Prescott
Sent: Friday, December 12, 2008 11:17 AM
To: [email protected]
Subject: Re: [flexcoders] Restrictions on non-visual component placement


It still seems to be true.

Yes, I can see that before repeaters are involved, but the detail popup creates 
a relationship between a pair of components - so once I get to an array of such 
pairs, it seemed like I'd need a detail popup for each pair.  It's stateful, 
and it would get muddled up if one detail popup was trying to coordinate 
multiple pairs of controls.  (Basically, I wanted the repeater to manage 
instances of the detail popup as well.)

Michael
On Fri, Dec 12, 2008 at 2:18 PM, Tracy Spratt 
<[email protected]<mailto:[email protected]>> wrote:

It IS, or at least was, the case that non-visual components must be at the root 
mxml scope.  I will try to find it documented.



If the component is non-visual, then it does not matter, functionally speaking, 
where in the DOM it goes.



Tracy



________________________________

From: [email protected]<mailto:[email protected]> 
[mailto:[email protected]<mailto:[email protected]>] On 
Behalf Of Rick Winscot
Sent: Friday, December 12, 2008 1:25 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: [flexcoders] Restrictions on non-visual component placement



It's difficult to determine what your problem is without knowing a little more 
about what your DetailPopUp does/is. If you post some code it would be far 
easier to determine why one context works and another doesn't. Generally... I 
wouldn't recommend mingling non-visual and visual components in mxml.

Your error basically says that your non-visual component doesn't have an 
appropriate interface for the context you are placing it in. e.g. It should be 
a IUIComponent.

http://livedocs.adobe.com/flex/201/langref/mx/core/IUIComponent.html

Rick Winscot


On 12/12/08 12:49 PM, "Michael Prescott" 
<[email protected]<http://[email protected]>> wrote:



Short version:

I have a non-visual component that I'm trying to declare in a repeater, but it 
seems that MXML doesn't allow this.  Is this true?  How do you get around this, 
create a visual component to wrap the non-visual component?

Long version:

I have an ActionScript non-visual component whose declaration looks like this:

public class DetailPopup extends EventDispatcher implements IMXMLObject

I've used this successfully inside an inline, MXML item renderer, like this:

 <mx:DataGridColumn>
    <mx:itemRenderer>
      <mx:Component>
        <mx:VBox>

          <!-- a bunch of other stuff, and then my: -->

          <my:DetailPopUp/>

        <mx:VBox>
      </mx:Component>
    </mx:itemRenderer>
  </mx:DataGridColumn>


Now that I'm switching from a DataGrid to a Grid, the code ought to look like 
this:

 <mx:GridItem>
    <mx:VBox>

      <!-- a bunch of other stuff, and then my: -->

(X)   <my:DetailPopUp/>

    <mx:VBox>
  </mx:GridItem>

..except that I'm getting an error, "Component declarations are not allowed 
here. (Note: visual children must implement IUIComponent.)"

After trying out a bunch of scenarios, it looks like non-visual components can 
only be declared in the outermost scope of a component or application.  Is this 
true?  This is rather awkward, as I need a DetailPopUp for each griditem.

Any tips would be very helpful!

Michael




Reply via email to