Bha, o que mais enche o saco em qualquer linguagem é definir o valor padrão para um ComboBox.
Então criei um componente que estende o ComboBox. Neste há dois métodos extras que deve ser setado o o Campo e o Valor.
Arquivo main.mxml<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:controls="br.mx.controls.*"
layout="absolute"
backgroundColor="#f6f6f6"
backgroundGradientColors="[#f6f6f6, #bbbbbb]"
creationComplete="init()"
viewSourceURL="srcview/index.html" >
<!-- Texto Superior -->
<mx:Label x="10" y="10" fontSize="20" fontWeight="bold"
text="Definindo valor padrão para o ComboBox" />
<!-- Barra Horizontal -->
<mx:HRule x="10" y="49" width="690" />
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var code:ArrayCollection = new ArrayCollection(
[ {label:"PHP", data:"1"},
{label:"Java", data:"2"},
{label:"Coldfusion", data:"3"} ]);
private function init():void
{
cb1.dataProvider = code;
cb1.campoSelecionado = "label";
cb1.valorSelecionado = "Coldfusion";
cb2.dataProvider = code;
cb2.campoSelecionado = "data";
cb2.valorSelecionado = 2;
}
]]>
</mx:Script>
<controls:MeuComboBox id="cb1" x="10" y="60" width="150" />
<controls:MeuComboBox id="cb2" x="10" y="90" width="150" />
</mx:Application>
Arquivo br/mx/controls/MeuComboBox.mxml
package br.mx.controls
{
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.ComboBox;
public class MeuComboBox extends ComboBox
{
private var _campo:String = '';
private var _valor:String = '';
public function MeuComboBox()
{
super();
}
public function set campoSelecionado(campo:String):void
{
if(campo.toString().length > 0)
{
this._campo = campo;
this.labelFun();
}
}
public function set valorSelecionado(valor:Object):void
{
if(valor.toString().length > 0)
{
this._valor = valor.toString();
this.labelFun();
}
}
private function labelFun():void
{
if(this._campo.length > 0 && this._valor.length > 0)
{
var data:ArrayCollection = this.dataProvider as ArrayCollection;
for(var a:int = 0; a< data.length; a++)
{
if(data[a][this._campo].toString() == this._valor.toString())
{
this.selectedIndex = a;
}
}
}
}
}
}
Veja o exemplo.
Divirtam-se com o Código Fonte.





Eduardo,
vc não precisa criar um novo atributo campoSelecionado pois o ComboBox já tem o atributo labelField.
daí em lugar da função set campoSelecionado vc pode simplesmente fazer um override set labelField().
julio
Ola Julio
O detalhe é que normalmente não se usa o atributo Label para setar este valor.
Eu sempre possuo uma lista contendo ID e TITULO, e o título é definido como label e o ID é definido como valor padrão.
'label' é o valor default para o atributo labelField que é de onde o ComboBox tira o texto a exibir.
tome por exemplo este código:
veja que o texto para o drop down virá do atributo nome a partir de uma lista xml. O campoSelecionado que vc incluiu no tem componente é exatamente o 'labelField' que já existe.
julio
Boa tarde eu sou novo no flex fiz um crusinho muito basico e é o seguinte eu preciso colocar um xml que eu fiz off line e tal e eu preciso colocar esse xml que se trata de varios carros, descricao dos carros e imagem dos carros e preciso que aparecam as imagens com o nome e descreicao embaixo das imagens como eu posso fazer isso teria como vc me pasar o codigo qualquer coisa posso ate mandar o codigo que estou fazendo para ver se vc pode me ajudar obrigado.!