Hi Kapil,
As per my Knowledge, better to specify xmllist as dataprovider to menubar
and getMenuByID function doesnt have finite number. It is better to write
code that when you click on some component it has to activate. Because if it
has infinite number it will compile fast and get stuck somewhere. In if
condition you need to wirte as
if(condition1)
{
menuBarXML.DataProvider = menuItem.id;
}
I think this will help you a little bit to solve your issue.
Regards,
Kiran
On Mon, May 30, 2011 at 4:30 PM, kapil kaushik <
[email protected]> wrote:
> Hi Kiran,
>
> Please find the code snippet below. The function of interest is
> "updateVisibleMenuItems". Based on certain condition it tries to
> enable/disable one menuitem or other. In future there may be more menuitems
> and the conditions may get complex, but this in essence reflects what I am
> trying to implement.
>
> As you can see, I have tried both the approaches:
> 1. Trying to change the XML structure
> 2. Get an individual menuItem and set its enable/visible property to false.
>
> Regards,
> Kapil
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:MenuBar xmlns:fx="http://ns.adobe.com/mxml/2009"
> xmlns:s="library://ns.adobe.com/flex/spark"
> xmlns:mx="library://ns.adobe.com/flex/mx"
> change="onItemClick(event)"
> chromeColor="{Palette.RED}"
> creationComplete="init()"
> >
> <fx:Declarations>
> <!-- Place non-visual elements (e.g., services, value objects) here -->
> </fx:Declarations>
> <fx:Script>
> <![CDATA[
>
> private function init():void {
> updateVisibleMenuItems();
> }
> private function onItemClick(event:MenuEvent):void {
> updateVisibleMenuItems();
> }
> private function updateVisibleMenuItems():void {
> var menuItem:MenuBarItem = null;
> var menu_item_1:MenuBarItem = getMenuByID("menuItem1");
> var menu_item_2:MenuBarItem = getMenuByID("menuItem2");
> if(condition1) {
> //menuBarXML.menuitem.(@id=="menuItem1").@enabled = "false";
> //menuBarXML.menuitem.(@id=="menuItem2").@enabled = "true";
> menu_item_1.visible = false;
> menu_item_1.enabled = false;
> menu_item_2.visible = true;
> } else {
> //menuBarXML.menuitem.(@id=="menuItem1").@enabled = "true";
> //menuBarXML.menuitem.(@id=="menuItem2").@enabled = "false";
> menu_item_1.visible = true;
> menu_item_2.visible = false;
> menu_item_2.enabled = false;
> }
> }
> private function getMenuByID(id:String):MenuBarItem {
> var menuItem:MenuBarItem = null;
> for(var i:uint = 0; i < this.menuBarItems.length; ++i) {
> menuItem = this.menuBarItems[i] as MenuBarItem;
> if(menuItem.id == id) {
> break;
> }
> }
> return menuItem;
> }
> ]]>
> </fx:Script>
> <fx:XMLList id="menuBarXML">
> <menuitem id="menuItem1" label="Label1"></menuitem>
> <menuitem label="|" />
> <menuitem id="menuItem2" label="Label2"></menuitem>
> <menuitem label="|" />
> </fx:XMLList>
> </mx:MenuBar>
>
>
> On Mon, May 30, 2011 at 1:27 PM, kiran reddy <[email protected]>wrote:
>
>> Hi,
>>
>> It is not possible to explain you without seeing your code.Because where
>> you went wrong we cant imagine so please paste your code.
>>
>>
>> Kiran.
>>
>> On Sun, May 29, 2011 at 1:40 PM, kapil kaushik
>> <[email protected]>wrote:
>>
>>> Hi All,
>>>
>>> I am trying to hide a menu item at runtime in Flex4, but even if I find
>>> the relevant menuBarItem and do "item.visible = false" or "item.enabled =
>>> false", it does not work.
>>> Any comments/suggestions??
>>>
>>> Thanks,
>>> Kapil
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Flex India Community" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/flex_india?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Flex India Community" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/flex_india?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Flex India Community" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/flex_india?hl=en.
>
--
You received this message because you are subscribed to the Google Groups "Flex
India Community" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/flex_india?hl=en.