Показать сообщение отдельно
Старый 03.01.2007, 08:32
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 6  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
По умолчанию CheckBox с тремя состояниями

Автор: Sephiroth
Оригинал: Checkbox 3 state

Проблема
Вам нужен CheckBox, который бы подерживал переключения между тремя состояниями, вместо стандартных двух, например это может пригодится в дрвевовидных списах.

Решение
Создайте компонент!

Подробнее
Сначала создайте новый компонент в Flex 2 наследник mx.controls.CheckBox, вы можете ознакомится с исходниками

Как только компонент создан, можете его протестировать в приложении вроде этого:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="org.sepy.ui.*" backgroundColor="#FFFFFF" backgroundGradientColors="[#EEEEEE]" clipContent="false">
    <mx:Script>
        <![CDATA[			
            import org.sepy.ui.CheckBoxExtended;
            /**			 
               * click event on the checkbox extended component
            */
            private function onclick(e:Event):void
            {
                var o:CheckBoxExtended = CheckBoxExtended(e.target);
                debug.htmlText = "[clicked]<br>selected: " + o.selected.toString() + "<br>middle:   " + o.middle;
                // if user is not allowed to select the 3rd state
                // set the 3rd state by coding it
                if(!o.allow3StateForUser)
                {					
                    // if current status is "middle"
                    // then toggle it
                    if(o.middle)
                    {
                        o.middle = false;
                    } else {
                        if(!o.selected)
                        {
                            o.middle = true;
                        }
                    }
                }
            }
        ]]>	
    </mx:Script>	
    <ns1:CheckBoxExtended x="10" y="40" id="my_checkbox" label="click me!"
            click="onclick(event);" 
            selected="true"
            allow3StateForUser="true"/>	
    <mx:Label x="10" y="10" text="CheckBox with 3state" fontSize="20"/> 
    <mx:Text x="10" y="79" width="224" height="139" id="debug"/>
</mx:Application>
Если все было сделано правильно, то вы должны увидеть нечто вроде этого.

Теперь вы можете откомпилировать ваш компонент, и положить его в папку "\Flex SDK2\frameworks\libs". Для этого напишите в коммандной строке:

Код:
compc -source-path+=. -output "C:\Program Files\Adobe\Flex Builder 2\Flex SDK 2\frameworks\libs\sephiroth_CheckBoxExtended.swc" -namespace http://www.sephiroth.it/2006/mxml mxml-manifest.xml -include-namespaces http://www.sephiroth.it/2006/mxml -include-classes org.sepy.skins.CheckBoxExtendedIcon
Исходник
Пример



Once created the component you need to compile it into an .swc component and place it into the "\Flex SDK 2\frameworks\libs" folder.
To do that use this command line
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^