I'm surprised it picked up the icon in systemManager.getDefinitionByName.  It 
should have picked it up from document[icon], which is what I mentioned several 
replies ago.  If you used TestComponent.mxml instead of TestComponent.as, the 
document pointer would be correct.  You can try setting the menu's document to 
your TestComponent instance.

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Rajan 
Jain
Sent: Monday, September 15, 2008 1:49 PM
To: [email protected]
Subject: Re: [flexcoders] Icons are not displayed in menuItem

I looked into function itemToIcon in ListBase.as


if (data is XML)

{
try

{
if (data[iconField].length() != 0)

{

icon = String(data[iconField]);
if (icon != null)

{

iconClass = Class(systemManager.getDefinitionByName(icon));


if (iconClass)

return iconClass;



return document[icon];

}

}

}

catch(e:Error)

{

}

}

In this systemManager points to TestCodeBehind.mxml.
If i declare variables in TestCodeBehind.mxml it works.


<mx:Script>

<![CDATA[

[Embed(source="assets/icon_help.gif")]

public var imgdeleteClass:Class;

[Embed(source="assets/button_edit.gif")]

public var imgeditClass:Class;

]]>

</mx:Script>

but i cannot do this as these varibles need to be defined in TestComponent.as 
but i can change icon attribute in xml.
So if reference can be made to TestComponent from systemManager then it will 
work.

Please help me out.

Thanks
Rajan


----- Original Message ----
From: Alex Harui <[EMAIL PROTECTED]>
To: "[email protected]" <[email protected]>
Sent: Monday, September 15, 2008 2:06:26 PM
Subject: RE: [flexcoders] Icons are not displayed in menuItem
Object is a different code path.  In XML, everything is strings and we have to 
convert them to classes.  The key function is probably itemToIcon in 
ListBase.as<http://listbase.as/>

From: [EMAIL PROTECTED] ups.com<http://ups.com/> [mailto:flexcoders@ 
yahoogroups. com] On Behalf Of Haykel BEN JEMIA
Sent: Monday, September 15, 2008 2:06 AM
To: [EMAIL PROTECTED] ups.com
Subject: Re: [flexcoders] Icons are not displayed in menuItem

I think the problem is else where, because when I use an array of objects to 
define the menu, the icons get displayed. I also displayed both menus at the 
same time and only the one defined from the array of objects shows the icons, 
so the icons are definitely in the document.

Here is the code I used:

public var myMenu2:Menu;
public var myMD:Array = [
          {label: "Edit", eventName: "copy", icon: imgeditClass} ,
          {label: "Delete", eventName: "delete", icon: imgdeleteClass} ];

and in showMenufunction( ) :

myMenu2=Menu. createMenu( this, myMD,false);
myMenu2.show( 400, 200);


Haykel


On Mon, Sep 15, 2008 at 7:34 AM, Alex Harui <[EMAIL PROTECTED] 
com<mailto:[EMAIL PROTECTED]>> wrote:

I think the icons are not on the document.  Try defining TestComponent in mxml 
and see if that makes a differenc.e



From: [EMAIL PROTECTED] ups.com<mailto:[email protected]> 
[mailto:[EMAIL PROTECTED] ups.com<mailto:[email protected]>] On Behalf 
Of Rajan Jain
Sent: Sunday, September 14, 2008 9:52 PM
To: [EMAIL PROTECTED] ups.com<mailto:[email protected]>
Subject: Re: [flexcoders] Icons are not displayed in menuItem



Hi All



I am made custom component(TestComponent) which extends Panel and shown menu at 
start up. Code is very very simple but i do not know why the menu icons are not 
displayed. Any pointers are highly appreciated. See the code below and i have 
also attached code files as attachement.



Thanks

Rajan

------------ --------- --------- --------- --------- --------- --------- 
--------- --------- --------- --------- --------- --------- --------- --------- 
--------- -----

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe. com/2006/ 
mxml<http://www.adobe.com/2006/mxml>" layout="absolute" xmlns:local="*">

<local:TestComponent width="100%" height="100%">

</local:TestComponen t>

</mx:Application>

------------ --------- --------- --------- --------- --------- --------- 
--------- --------- --------- --------- --------- --------- --------- --------- 
--------- -----

package

{

import flash.events. Event;

import mx.containers. Panel;

import mx.controls. Menu;

import mx.events.FlexEvent ;

public class TestComponent extends Panel

{

public var myMenu:Menu;

[Embed(source="assets/icon_ help.gif")]

public var imgdeleteClass: Class;

[Embed(source="assets/button_ edit.gif")]

public var imgeditClass: Class;

public var myMenuData:XML=<menu>

<menuitem label="Edit" eventName="copy" icon="imgdeleteClass" />

<menuitem label="Delete" eventName="paste" icon="imgdeleteClass"/>

</menu>;

public function TestComponent( )

{

    super();

    addEventListener( FlexEvent. CREATION_ COMPLETE, showMenufunction );

}

public function showMenufunction( event:Event=null):void

{

if(myMenu == null)

{

myMenu=Menu. createMenu(this, myMenuData,false);

myMenu.iconField="@icon";

myMenu.labelField="@eventName";

myMenu.show( 200,200);

}

}

}

}





----- Original Message ----
From: Alex Harui <[EMAIL PROTECTED] com<mailto:[EMAIL PROTECTED]>>
To: "[EMAIL PROTECTED] ups.com<mailto:[email protected]>" <[EMAIL 
PROTECTED] ups.com<mailto:[email protected]>>
Sent: Sunday, September 14, 2008 1:09:59 AM
Subject: RE: [flexcoders] Icons are not displayed in menuItem

I think it should just be ( no curlys ):



<mx:XML id="myMenuData">
         <root>
             <menuitem label="MenuItem 1" eventName="copy" 
icon="imgdeleteClass"/>
             <menuitem label="MenuItem 2" eventName="paste" 
icon="imgeditClass"/>
         </root>
     </mx:XML>



From: [EMAIL PROTECTED] ups.com<http://ups.com/> 
[mailto:flexcoders@<mailto:flexcoders@> yahoogroups. com] On Behalf Of Rajan 
Jain
Sent: Saturday, September 13, 2008 8:55 PM
To: [EMAIL PROTECTED] ups.com<http://ups.com/>
Subject: [flexcoders] Icons are not displayed in menuItem



Hi All



I am trying to display icon in the menu. I am using example from livedocs 
language reference. I have added



icon attribute to dataprovider

myMenu.iconField="@icon"



but icons are not displayed.

Any pointers are highly appreciated.



Thanks

Rajan



------------ --------- --------- --------- --------- --------- --------- 
--------- --------- --------- --------- --------- --------- --------- --------- 
--------- -----

Complete Source Code-






<?xml version="1.0"?>
<!-- Simple example to demonstrate the Menu control. -->
<mx:Application xmlns:mx="http://www.adobe. com/2006/ 
mxml"><http://www.adobe.com/2006/mxml>

     <mx:Script>
         <![CDATA[

             import mx.controls. Menu;
             import mx.events.MenuEvent ;
             import mx.controls. Alert;
             impo! rt flash.geom.Point;

    [Bindable]
    [Embed(source="assets/icon_ help.gif")]
        public var imgdeleteClass: Class;

    [Bindable]
    [Embed(source="assets/button_ edit.gif")]
        public var imgeditClass: Class;

             private var point1:Point = new Point();
             private var myMenu:Menu;

             // Create and display the Menu control.
             private function showMenu():void {
                 myMenu= Menu.createMenu( panel, myMenuData, false);
                 myMenu.labelField="@label"
                 myMenu.iconField="@icon";
                 myMenu.addEventList ener("itemClick", menuHandler) ;

                 // Calculate position of Menu in Application' s coordinates.
                 point1.x=mybutton. x;
                 point1.y=mybutton. y;
                 point1=mybutton. localToGlobal( point1);

                 myMenu.show( point1.x + 25, point1.y + 25);
             }

             // Event handler for the Menu control's change event.
             private function menuHandler( event:MenuEvent) :void  {
                 Alert.show("Label: " + event.item.@ label, "Clicked menu 
item");
             }
         ]]>
     </mx:Script>

     <mx:XML id="myMenuData">
         <root>
             <menuitem label="MenuItem 1" eventName="copy" 
icon="{imgdeleteClass}"/>
             <menuitem label="MenuItem 2" eventName="paste" 
icon="{imgeditClass}"/>
         </root>
     </mx:XML>

     <mx:Panel id="panel" title="Menu Control Example" height="75%" width="75%"
         paddingTop="10" paddingLeft="10">

         <mx:Label width="100%" color="blue"
            text="Click the button to open the Menu control."/>

         <mx:Button id="mybutton" label="Open Menu" click="showMenu();"/>

     </mx:Panel>
</mx:Application>








Reply via email to