Use an Item Renderer...

Test1.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="vertical">
     <mx:Script>
         <![CDATA[
             [Bindable] private var dp:Array = [
                 {ColorName: "Red", ColorHex: "#FF0000"},
                 {ColorName: "Blue", ColorHex: "#0000FF"},
                 {ColorName: "Yellow", ColorHex: "#FFFF00"}
                 ];
         ]]>
     </mx:Script>
     <mx:ComboBox dataProvider="{dp}" labelField="ColorName"
itemRenderer="Test1ItemRenderer"/>
</mx:Application>


Test1ItemRenderer.as:
package
{
     import mx.controls.*;

     public class Test1ItemRenderer extends Text
     {
         private var colorHex:String;

         public function Test1ItemRenderer()
         {
             super();
         }

         override public function set data(value:Object):void
         {
             if(value != null)
             {
                 super.data = value;
                 colorHex = value.ColorHex;
             }
         }

         override protected function
updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
         {
             super.updateDisplayList(unscaledWidth, unscaledHeight);
             setStyle("color", colorHex);
         }
     }
}


--- In flexcoders@yahoogroups.com, Angelo Anolin <angelo_ano...@...>
wrote:
>
> Hi Flexcoders,
>
> How would I be able to set different styles on the list of a combo box
based on
> the values for the binding list to that?
>
> For example, I have some data retrieved as follows:
>
> ColorName  ColorHex
> Red        #FF0000
> Blue       #0000FF
> Yellow     #FFFF00
>
> And I am binding it to the combo box.
>
> Now When I show the list of the combo box, the LabelField maps to the
ColorName
> column and I want to display the ColorName based on its color as
defined in the
> ColorHex column.
>
> Any tips?
>
> Thanks.
>

Reply via email to