Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Установить флаг в Menu (http://www.flasher.ru/forum/showthread.php?t=128939)

STILL.05 20.08.2009 19:33

Установить флаг в Menu
 
имеется menuitem с типом "check"
Код AS3:

private var menubarXML:XMLList =
  <>
      <menuitem label="Menu1" data="top">
            <menuitem label="MenuItem 1" data="1" type="check" toggled="false"/>
      </menuitem>
  </>;

если установить параметр toggled = true то меню по умолчанию является выделенным (рисуется галочка в меню)

вопроc: как программно изменить этот параметр?

udaaff 20.08.2009 20:59

Предполагаю, что таким образом...
Код AS3:

menubarXML..*.(@label == "MenuItem 1").@toggled = true;


STILL.05 20.08.2009 21:04

такой способ не прокатит
попробовал так
Код AS3:

var child:Object = {label:'MenuItem 1', type:'check', toggled='false'}
 
var source:Array = []
source.push({label:'Menu1', children:[child]})
menuBar.labelField = 'label';
menuBar.dataProvider = new ArrayCollection(source)

если менять свойство child.toggled то меню запоминает первое значение, а в последствии не меняет его

udaaff 20.08.2009 21:10

Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
                <![CDATA[
 
                        [Bindable]
                        private var menubarXML:XMLList =
                        <>
                                <menuitem label="Menu1" data="top">
                                        <menuitem label="MenuItem 1" data="1" type="check" toggled="false"/>
                                </menuitem>
                        </>;
 
                        private function button_clickHandler(event:MouseEvent):void
                        {
                                menubarXML..*.(@label == "MenuItem 1").@toggled = true;
                        }
                ]]>
        </mx:Script>
 
        <mx:MenuBar id="menuBar" dataProvider="{menubarXML}" labelField="@label"/>
        <mx:Button id="button" y="200" click="button_clickHandler(event);" />
 
</mx:Application>


STILL.05 20.08.2009 21:18

хмм... интересно а как реализовать это для второго способа, когда dataProvider задается через ArrayCollection?

udaaff 21.08.2009 17:21

Да также, наверное. Только доступ к toggled через другой синтаксис.

STILL.05 22.08.2009 16:52

нашел решение.
нужно создать [Bindable] переменную типа ArrayCollection, и её передавать в menuBar.dataProvider

Далее в ArrayCollection запихивать не просто Object={label:... toggled:...}
а создать свой класс, у которого set/get метод toggled будет так же [Bindable]

:yahoo:


Часовой пояс GMT +4, время: 06:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.