Ir para conteúdo

POWERED BY:

Arquivado

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

Tatiane .

Problema no onChange do ComboBox

Recommended Posts

Oi gente, Estou encontrando problemas na utilização do ComboBox quando ele é instanciado através da classe ComboBox.Vou explicar melhor...Quando instancio um ComboBox, por exemplo "cb", adiciono itens e registro uma função ouvidora para o evento de onChange, qualquer alteração na combo, a função é executada. Alteração via teclado, mouse e até mesmo quando abrimos a lista da combo e navegamos pelas setas. Porém, se declarar "cb" como instância da classe ComboBox, o evento onChange não se comporta como anteriormente. Ocorre que, quando o usuário abre a lista da combo e navega pelo teclado, o item selecionado é atualizado, porém, o evento de change não é disparado. Esse é um comportamento esperado?Ahh... estou usando o Flash MX 2004.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. como você está criando o ouvinte?

 

Exemplo

var listenerObject:Object = new Object();listenerObject.change = function(eventObject:Object) {	// Your code here.};comboBoxInstance.addEventListener("change", listenerObject);

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, sim, a função ouvidora tá funcionando direitinho...

 

fiz um exemplo pra ficar mais claro..

 

Desta forma funciona corretamente, mas não posso utiliza-lo pois uso em uma classe externa.

cb1.addItem("A");cb1.addItem("B");cb1.addItem("C");cb1.addItem("D");cb1.addItem("E");cb1.addItem("F");cb1.addItem("G");listener = new Object();listener.change = function(event:Object) {   trace(event.target._name + " - " + event.target.selectedItem.label);}cb1.addEventListener("change", listener);

Quando incluo as duas linhas abaixo, o comportamento é alterado e não funciona mais como deveria.

 

import mx.controls.ComboBox;var cb1:ComboBox;

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, realmente estranho. Não tive tempo de achar uma solução, a não ser não usar o strict data typing. Deve ser algum bug nas classes dos componentes, pois o flash acusa não haver os eventos addItem e addEventListener, que na verdade são herdados de outras classes do sistema deles.

 

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O strict data typing é apenas a declaração do tipo de variável.a = "1"; //semvar a:String = "1"; //com strict data typingEntão seria mais fácil apenas ignorar o var cb1:ComboBox;, hehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, mas infelizmente eu não tenho como ignorar a declaração pois utilizo o combo dentro de uma classe externa.Eu consigo acessar todos os métodos do combo através da classe externa, apenas o comportamento (quando utilizado pelo teclado) é diferente.

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.