Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pranchana

Listar opções de combobox de acordo com uma escolha anterior

Recommended Posts

Olá pessoal,

 

Estou montando um formulário em AS3 para Venda ou Compra de Veículos. Meu caso é o seguinte:

 

Este é meu modelo de XML, está bem básico, mas na realidade ele é bem grandinho.

 

<Veiculos>
<Fiat para="Compra">
	<exemplo>Bla bla bla</exemplo>
	<exemplo>Bla bla bla</exemplo>
</Fiat>
<Volks para="Venda">
	<exemplo>Bla bla bla</exemplo>
	<exemplo>Bla bla bla</exemplo>
</Volks>
<Ferrari para="Venda">
	<exemplo>Bla bla bla</exemplo>
	<exemplo>Bla bla bla</exemplo>
</Ferrari>
</Veiculos>

 

Tenho 2 combobox, um instanciado como "tipo", e outro como "marcas".

O combobox "tipo" possui dois labels: "Compra" e "Venda".

 

O objetivo que quero é, ao selecionar no 1º combobox o tipo de negócio (Venda ou Compra), o segundo combobox iria listar as marcas de acordo com a escolha do primeiro combobox.

 

A listagem das marcas viria do arquivo XML acima, e utilizaria os nomes das Tags dos Nós (Fiat, Volks, Ferrari), e a discriminação de acordo com o atributo "para" (Venda, Compra).

 

Porém não sei fazer essa condição de um combobox ser preenchido de acordo com a escolha feita anteriormente. Além disso, não sei listar o próprio combobox com os nomes das Tags dos Nós.

 

Qualquer ajuda é bem vinda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

 

Estou montando um formulário em AS3 para Venda ou Compra de Veículos. Meu caso é o seguinte:

 

Este é meu modelo de XML, está bem básico, mas na realidade ele é bem grandinho.

 

<Veiculos>
<Fiat para="Compra">
	<exemplo>Bla bla bla</exemplo>
	<exemplo>Bla bla bla</exemplo>
</Fiat>
<Volks para="Venda">
	<exemplo>Bla bla bla</exemplo>
	<exemplo>Bla bla bla</exemplo>
</Volks>
<Ferrari para="Venda">
	<exemplo>Bla bla bla</exemplo>
	<exemplo>Bla bla bla</exemplo>
</Ferrari>
</Veiculos>

 

Tenho 2 combobox, um instanciado como "tipo", e outro como "marcas".

O combobox "tipo" possui dois labels: "Compra" e "Venda".

 

O objetivo que quero é, ao selecionar no 1º combobox o tipo de negócio (Venda ou Compra), o segundo combobox iria listar as marcas de acordo com a escolha do primeiro combobox.

 

A listagem das marcas viria do arquivo XML acima, e utilizaria os nomes das Tags dos Nós (Fiat, Volks, Ferrari), e a discriminação de acordo com o atributo "para" (Venda, Compra).

 

Porém não sei fazer essa condição de um combobox ser preenchido de acordo com a escolha feita anteriormente. Além disso, não sei listar o próprio combobox com os nomes das Tags dos Nós.

 

Qualquer ajuda é bem vinda!

 

Lembre-se de ter o componente combobox na sua bibilioteca.

 

import fl.controls.ComboBox;
import flash.events.Event;

// Xml Tipo
var tipoXml:XML = <Tipo>
       <Item valor="">Selecione um tipo</Item>
       <Item valor="Compra">Compra</Item>
       <Item valor="Venda">Venda</Item>
</Tipo>;

// Xml Marca
var marcaXml:XML = <Marca>
       <Fiat para="Compra" nome="Fiat">
               <exemplo>Bla bla bla</exemplo>
               <exemplo>Bla bla bla</exemplo>
       </Fiat>
       <Volks para="Venda" nome="Volks">
               <exemplo>Bla bla bla</exemplo>
               <exemplo>Bla bla bla</exemplo>
       </Volks>
       <Ferrari para="Venda" nome="Ferrari">
               <exemplo>Bla bla bla</exemplo>
               <exemplo>Bla bla bla</exemplo>
       </Ferrari>
</Marca>;

// Atualizar Marca
function AtualizarMarca(evento:Event):void
{
// Facilita o acesso a recursos do combobox selecionado
var combo:ComboBox = evento.currentTarget as ComboBox;
// Extraindo o valor do combo selecionado
var valor:String = combo.selectedItem.data;
// Limpando o combo de marcas
marcaCbx.removeAll();
// Desabilitando o combo
marcaCbx.enabled = false;
// Passando por todos os item do Xml de marcas
for each(var item:XML in marcaXml.children())
{
	// Checando se o tipo bate
	if(item.@para == valor)
	{
		// Adiciona uma marca ao combo
		var dados:Object = new Object();
		dados.label = item.@nome;
		dados.data = item.@nome;
		marcaCbx.addItem(dados);
	}
}
// Se mais de um item for adicionado...
if(marcaCbx.length > 0)
{
	// Colocando uma mensagem como primeiro item
	var dados:Object = new Object();
	dados.label = "Selecione uma marca";
	dados.data = "";
	marcaCbx.addItemAt(dados, 0);
	// Abilitando o combo
	marcaCbx.enabled = true;
}
}

// Configurando Tipo
var tipoCbx:ComboBox = new ComboBox();
tipoCbx.y = 10;
tipoCbx.x = 10;
tipoCbx.width = 120;
// Passando por todos os tipos no XML
for each(var item:XML in tipoXml.Item)
{
var dados:Object = new Object();
dados.label = item.text();
dados.data = item.@valor;
tipoCbx.addItem(dados);
}
tipoCbx.addEventListener(Event.CHANGE, AtualizarMarca);
this.addChild(tipoCbx);
// Configurando Marca
var marcaCbx:ComboBox = new ComboBox();
marcaCbx.y = 10;
marcaCbx.x = 140;
marcaCbx.width = 120;
marcaCbx.enabled = false;
this.addChild(marcaCbx);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.