Skip to main content
Participant
October 22, 2010
Question

related 2 ComboBox after removeAll() removes font styles

  • October 22, 2010
  • 1 reply
  • 504 views

Hi,

I have two related comboBox on the stage

First ones instance name is grp_cb

Second ones instance name is altGrp_cb

They load data from XML...

When they first load their text format are as I coded.

But after I change the first one second ones text format disappears...

After B Blok selected

Related part of my code

grpTf = new TextFormat();
grpTf.size = 18;

function cbXml()
  {
   var XMLLoader:URLLoader = new URLLoader();
   var grpURL:URLRequest = new URLRequest("../genel/girisimGrp.xml");
   XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded);
   XMLLoader.load(grpURL);
  }


  function xmlLoaded(evt:Event):void
  {

   var result:XML=new XML(evt.target.data);
   var grpXML:XMLDocument=new XMLDocument();
   grpXML.ignoreWhite=true;
   grpXML.parseXML(result.toXMLString());
   //trace(grpXML);
   var node:XMLNode = grpXML.firstChild;
   var grpNum:int = int(node.firstChild.childNodes.length);
   //trace(grpNum);
   for (var i:int=0; i < grpNum; i++)
   {
    grp_arr.push(node.firstChild.childNodes.attributes["label"]);

    var altGrpNum:int = int(node.firstChild.childNodes.childNodes.length);

    var my_array_1:Array=new Array();
    for (var j:int=0; j < altGrpNum; j++)
    {
     my_array_1.push(node.firstChild.childNodes.childNodes.firstChild.nodeValue);
    }
    altGrp_arr.push(my_array_1);
   }
  
  
   //trace(altGrp_arr);
  
   populateGrpCb();
   populateGrpCb2();
  }

  private function populateGrpCb():void
  {
   for (var i:int=0; i < grp_arr.length; i++)
   {
    grp_cb.addItem({label:grp_arr,data:i.toString()});
   }

  
   grp_cb.selectedIndex = 0;
   grpVar = grp_cb.selectedItem.label;
   trace(grpVar);


   grp_cb.textField.setStyle("textFormat",grpTf);
   grp_cb.dropdown.setRendererStyle("textFormat", grpTf);
   grp_cb.textField.setStyle("disabledTextFormat", grpTf);

   grp_cb.addEventListener(Event.CHANGE,grpChangeHandler);
  }


  private function grpChangeHandler(evt:Event):void
  {
   grpVar = evt.currentTarget.selectedItem.label;
   trace(grpVar);
   id = evt.target.selectedItem.data;
  
   populateGrpCb2();
  }

  private function populateGrpCb2():void
  {
   altGrp_cb.removeAll();
  
   for (var i:int=0; i < altGrp_arr[id].length; i++)
   {
    altGrp_cb.addItem({label:altGrp_arr[id],data:i.toString()});
   }
  
   altGrp_cb.selectedIndex = 0;
   altGrpVar = altGrp_cb.selectedItem.label;
   trace(altGrpVar);

   altGrp_cb.addEventListener(Event.CHANGE, altGrpChangeHandler);
  
   altGrp_cb.textField.setStyle("textFormat",grpTf);
   altGrp_cb.dropdown.setRendererStyle("textFormat", grpTf);
   altGrp_cb.textField.setStyle("disabledTextFormat", grpTf);
  
  }

  private function altGrpChangeHandler(evt:Event):void
  {
   altGrpVar = evt.currentTarget.selectedItem.label;
   trace(altGrpVar);
  
  
   altGrp_cb.textField.setStyle("textFormat",grpTf);
   altGrp_cb.dropdown.setRendererStyle("textFormat", grpTf);
   altGrp_cb.textField.setStyle("disabledTextFormat", grpTf);
  }

----------------------------------------------------------------------------------------------------------------------------------

I thing the problem is related to removeAll() function...

Any idea, how can I have my comboBox text format back????

Thanks

This topic has been closed for replies.

1 reply

Participant
December 9, 2010

I'm seeing the same problem. using the removeAll() causes the header textFormat to revert to the default text format.

You can see example of combobox header textformat bug / problem in action here:

http://www.gieson.com/tidbits/combobox_bug/

And the source code here:

// Add combo box from componants window to stage and name it "myCB".

// Add 2 button componants to stage and name "myButt1, and myButt2

// Header Text:
var CB_HeaderTextFormat:TextFormat = new TextFormat(); 
CB_HeaderTextFormat.color = 0xFF0000;
CB_HeaderTextFormat.font = "Arial";
CB_HeaderTextFormat.bold = true;
CB_HeaderTextFormat.size = 14;

myCB.textField.setStyle("disabledTextFormat", CB_HeaderTextFormat);
myCB.textField.setStyle("textFormat", CB_HeaderTextFormat);

// List Text:
var CB_ListTextFormat:TextFormat = new TextFormat(); 
CB_ListTextFormat.color = 0x0000FF;
CB_ListTextFormat.font = "Arial";
CB_ListTextFormat.size = 10;

myCB.dropdown.setRendererStyle("textFormat", CB_ListTextFormat);
myCB.rowCount = 15;

function addDropDownItems(useRemoveAll){

    if(useRemoveAll){
        myCB.removeAll();
    }

    myCB.addItem({label:"--- Select ---", data:"nothing"});
    myCB.addItem({label:"Item 1", data:"1"});
    myCB.addItem({label:"Item 2", data:"2"});
    myCB.addItem({label:"Item 3", data:"3"});
    myCB.addItem({label:"Item 4", data:"4"});
    myCB.addItem({label:"Item 5", data:"5"});


    // Seems like you also have to re-apply the textformat after adding items too?
    // Maybe need that old "newTextFormat" feature (AS2)?
    myCB.textField.setStyle("textFormat", CB_HeaderTextFormat);
    myCB.textField.setStyle("disabledTextFormat", CB_HeaderTextFormat);
  
}

// The buttons:

myButt1.addEventListener(MouseEvent.CLICK, doButt1);
myButt1.label = "Use Remove All";
function doButt1(e:Event){
    addDropDownItems(true);
}

myButt2.addEventListener(MouseEvent.CLICK, doButt2);
myButt2.label = "Don't Use Remove All";
function doButt2(e:Event){
    addDropDownItems(false);
}