PDA

View Full Version : [AS3] List selectedItem text color


camdagr8
03-04-2009, 03:29 PM
Geezus!!! I've been looking for two days now for a way to change the selectedItem's text color. I can set the text color for all items but not the selected? WHY does adobe thrive on kicking us developers in the nuts with dumb stuff like this?

Here's what I have so far...


import fl.data.DataProvider;
import flash.text.TextFormat;

var dp:DataProvider = new DataProvider();
for (var i = 0; i < 10; i++) { dp.addItem({label: 'item ' + i}); }
list.dataProvider = dp;

var fmt:TextFormat = new TextFormat();
fmt.font = new MyriadPro().fontName;
fmt.color = 0x000000;

list.setRendererStyle('textFormat', fmt);
list.setRendererStyle('embedFonts', true);

All this works perfectly, but does ANYONE know how to make it so that when I select an item in my list it changes the color of the selectedItem to red?

camdagr8
03-04-2009, 04:08 PM
Okay, figured it out, hope this helps anyone else out there trying to do the same:


import fl.data.DataProvider;
import flash.text.TextFormat;
import fl.managers.StyleManager;
import fl.controls.listClasses.CellRenderer;

var dp:DataProvider = new DataProvider();
for (var i = 0; i < 10; i++) { dp.addItem({label: 'item ' + i}); }
list.dataProvider = dp;

var fmt:TextFormat = new TextFormat();
fmt.font = new MyriadPro().fontName;
fmt.color = 0x000099;
fmt.size = 14;

var hfmt:TextFormat = new TextFormat();
hfmt.font = new MyriadPro().fontName;
hfmt.color = 0xFFFFFF;
hfmt.size = 14;

function setColors() {
StyleManager.setStyle("selectedTextFormat", hfmt);
StyleManager.setStyle("unselectedTextFormat", fmt);
StyleManager.setStyle("textFormat", fmt);
StyleManager.setStyle("embedFonts", true);
}
function unselectColor():void {
for (var i = 0; i < list.length; i++) {
var item:Object = list.getItemAt(i);
var cr:CellRenderer = list.itemToCellRenderer(item) as CellRenderer;
cr.setStyle("textFormat", StyleManager.getStyle("unselectedTextFormat"));
}
}

function selectedColor(event:ListEvent):void {
unselectColor();
var cr:CellRenderer = list.itemToCellRenderer(event.item) as CellRenderer;
cr.setStyle("textFormat",StyleManager.getStyle("selectedTextFormat"));
}

setColors();
list.addEventListener(ListEvent.ITEM_DOUBLE_CLICK, selectedColor);

isdito
03-09-2009, 10:38 AM
I am finding the form to change one element of the dataGrid.

Thanks and sorry my bad english