Автор:
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