En este tip mostraré como podemos personalizar los iconos de las carpetas y de los objetos que se visualizan en un componente Tree en Flex.
Para empezar veremos que automáticamente Flex coloca unos iconos por defecto al visualizar un componente Tree. Un icono de carpete abierta o cerrada segun sea el caso, y una hoja de papel en blanco para los objetos:
Código :
<mx:XMLList id="listado"> <group name="admin"> <claber name="Freddie" level="43458"/> </group> <group name="Bofh"> <claber name="_Conejo" level="7203"/> <claber name="Zguillez" level="4120"/> <claber name="Mariux" level="2921"/> </group> <group name="swat"> <claber name="Eldervaz" level="3123"/> <claber name="Zah" level="2906"/> </group> <group name="pda"> <claber name="XKlibur" level="4713"/> </group> <group name="claber"> <claber name="Elecash" level="7289"/> <claber name="Bleend" level="2016"/> <claber name="Carmen Vivas" level="610"/> </group> </mx:XMLList>
Código :
<mx:Tree id="listadoClabers"
horizontalCenter="0" verticalCenter="0"
width="200" height="200"
dataProvider="{listado}"
labelField="@name">
</mx:Tree>
Código :
<mx:Script> <![CDATA[ [Bindable] [Embed(source="img/ico1.png")] private var ico1:Class; [Bindable] [Embed(source="img/ico2.png")] private var ico2:Class; [Bindable] [Embed(source="img/ico3.png")] private var ico3:Class; ]]> </mx:Script>
Código :
<mx:Tree id="listadoClabers"
horizontalCenter="0" verticalCenter="0"
width="200" height="200"
dataProvider="{listado}"
labelField="@name"
folderClosedIcon="{ico1}"
folderOpenIcon="{ico2}"
defaultLeafIcon="{ico3}">
</mx:Tree>
Código :
<mx:Tree id="listadoClabers"
horizontalCenter="0" verticalCenter="0"
width="200" height="200"
dataProvider="{listado}"
labelField="@name"
iconFunction="setGeneroIcon">
</mx:Tree>
Código :
<mx:XMLList id="listado"> <group name="admin" folder="true"> <claber name="Freddie" level="43458" genero="M"/> </group> <group name="Both" folder="true"> <claber name="_Conejo" level="7203" genero="M"/> <claber name="Zguillez" level="4120" genero="M"/> <claber name="Mariux" level="2921" genero="F"/> </group> <group name="swat" folder="true"> <claber name="Eldervaz" level="3123" genero="M"/> <claber name="Zah" level="2906" genero="M"/> </group> <group name="pda" folder="true"> <claber name="XKlibur" level="4713" genero="F"/> </group> <group name="claber" folder="true"> <claber name="Elecash" level="7289" genero="M"/> <claber name="Bleend" level="2016" genero="M"/> <claber name="Carmen Vivas" level="610" genero="F"/> </group> </mx:XMLList>
Código :
private function setGeneroIcon(i:Object):Class
{
var isFolder:String = String(i.@folder);
if (isFolder == "true")
{
if (listadoClabers.isItemOpen(i))
{
return ico2;
}
else
{
return ico1;
}
}
Código :
else
{
var genero:String = String(i.@genero);
if (genero == "M")
{
return ico3;
}
else if (genero == "F")
{
return ico4;
}
else
{
return null;
}
}
}
]]>
</mx:Script>
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
[Embed(source="img/ico1.png")]
private var ico1:Class;
[Bindable]
[Embed(source="img/ico2.png")]
private var ico2:Class;
[Bindable]
[Embed(source="img/ico3.png")]
private var ico3:Class;
[Bindable]
[Embed(source="img/ico4.png")]
private var ico4:Class;
private function setGeneroIcon(i:Object):Class
{
var isFolder:String = String(i.@folder);
if (isFolder == "true")
{
if (listadoClabers.isItemOpen(i))
{
return ico2;
}
else
{
return ico1;
}
}
else
{
var genero:String = String(i.@genero);
if (genero == "M")
{
return ico3;
}
else if (genero == "F")
{
return ico4;
}
else
{
return null;
}
}
}
]]>
</mx:Script>
<mx:XMLList id="listado">
<group name="admin" folder="true">
<claber name="Freddie" level="43458" genero="M"/>
</group>
<group name="Both" folder="true">
<claber name="_Conejo" level="7203" genero="M"/>
<claber name="Zguillez" level="4120" genero="M"/>
<claber name="Mariux" level="2921" genero="F"/>
</group>
<group name="swat" folder="true">
<claber name="Eldervaz" level="3123" genero="M"/>
<claber name="Zah" level="2906" genero="M"/>
</group>
<group name="pda" folder="true">
<claber name="XKlibur" level="4713" genero="F"/>
</group>
<group name="claber" folder="true">
<claber name="Elecash" level="7289" genero="M"/>
<claber name="Bleend" level="2016" genero="M"/>
<claber name="Carmen Vivas" level="610" genero="F"/>
</group>
</mx:XMLList>
<mx:Tree id="listadoClabers"
horizontalCenter="0" verticalCenter="0"
width="200" height="200"
dataProvider="{listado}"
labelField="@name"
folderClosedIcon="{ico1}"
folderOpenIcon="{ico2}"
defaultLeafIcon="{ico3}"
iconFunction="setGeneroIcon">
</mx:Tree>
</mx:Application>
M@U :
Zguillez :
M@U :