Questione : Albero della flessione con il pulsante di scelta

Ho i dati di XML e voglio indicare che dati nel controllo dell'albero della flessione con il pulsante di scelta. Come potere uniamo l'albero della flessione ed il tasto per leafs.

Let noi suppone che abbiamo la seguente applicazione sul posto:


: Xmlns di applicazione: del >
" del #FFFFFF " " del backgroundColor= " del nofollow " > http://www.adobe .com/2006/mxml " del rel= " del _blank " del target= " di http://www.adobe.com/2006/mxml del href= di
„ del label= " " di part1 del id= del
della lista B "„ del label= " " di item2 del id= del


„ del label= " " di part2 del id= del
" del label= " " di part1 del id= del
della lista A " " del label= " " di item1 del id= del del
del >
" di myData " " del id= " di e4x del format= di XML part1 " ha controllato = part2„ controllato = part1„ controllato = part2„ controllato = controllato = “allineare„id= “allineare„ “falso„ “falso„ “falso„ " part1„ del
della lista E "„ del label= " del id= " item5 del
di/>
„ del label= " " di part2 del id= del
„ del label= " " di part1 del id= del
dell'elemento D "„ del label= " " di item4 del id= del del
del >
della lista C "„ del label= " " di item3 del id= del di/>

„ del label= " " di part2 del id= del
„ del label= " " di part2 del id= del
part4„ ha controllato = part5„ controllato = part1„ controllato = part2„ controllato = label= “falso„ " part1„ del id= " part15„ del
della lista F "„ del label= " del id= " item6 del
di/>
del label= " part1„ ha controllato = controllato =


: XML>
 
 
     „ 5„ paddingBottom= "„ del paddingRight= " 5 5 "

: Width= falso del
" dello showRoot= " del
" " di myTree„ del id= del
dell'albero 100%„ height= del
" 100%„ folderClosedIcon=„ {posizione di segnale minimo} “folderOpenIcon=„ {posizione di segnale minimo}„ defaultLeafIcon= " {posizione di segnale minimo} “dataProvider=„ {myData}„ openItems= " {myData. .item} “>
" del @label„ del labelField= del
del
del
del
del
: Tree>
       
   
             
   

How può noi realizzare quanto segue:
•Popolare l'albero basato sul
di valore (contrassegno selezionato esposizione se è allineare)•Determinare il nodo (controllato) selezionato con il relativo genitore per ulteriore processing.
•Il pulsante di scelta dovrebbe lavorare individualmente ad ogni
(che cosa di nodo significo da questo che dovremmo avere gruppo del pulsante di scelta per ogni genitore bambini del
List A che di node.
come esempio ha pulsante di scelta e l'evento su quel pulsante di scelta non dovrebbe interessare il pulsante di scelta della lista B).


class= del

Risposta : Albero della flessione con il pulsante di scelta

Ciò che segue è la mia soluzione:
1- Generare un TreeItemRenderer su ordinazione come segue:

RadioButtonTreeItemRenderer.as
_________________________________________________
pacchetto
{
      importazione flash.events. Evento;
      
      importazione mx.controls.RadioButton;
      importazione mx.controls.RadioButtonGroup;
      importazione mx.controls.treeClasses.*;

      il codice categoria pubblico RadioButtonTreeItemRenderer estende TreeItemRenderer
      {
            pubblico varietà RadioBtn: RadioButton;
            pubblico varietà RadioBtnGR: RadioButtonGroup
        itemXml pubblico di varietà: XML;

            funzione pubblica RadioButtonTreeItemRenderer ()
            {
                  eccellente ();
                  mouseEnabled = falso;
            }


            dati stabiliti di funzione pubblica della provvigione supplementare (valore: Oggetto): vuoto {
            se (valore! = posizione di segnale minimo) {
                super.data = valore;
               
                this.itemXml = XML (valore);
                se (== di this.itemXml.@checked allineare) {
                    this.RadioBtn.selected = allineano;
                } altrimenti {
                    this.RadioBtn.selected = falso;
                }
            }
        }
        la funzione protettiva provvigione supplementare createChildren (): vuoto {
            super.createChildren ();
            RadioBtn = nuovo RadioButton ();
            RadioBtnGR = nuovo RadioButtonGroup ();
           
           RadioBtn.group = RadioBtnGR;
           addChild (RadioBtn);
        }
        updateDisplayList di funzione protettivo provvigione supplementare (unscaledWidth: Numero, unscaledHeight: Numero): vuoto {
            super.updateDisplayList (unscaledWidth, unscaledHeight);
            se (super.data) {
                tld di varietà: TreeListData = TreeListData (super.listData);

                se (tld.hasChildren) {
                    this.RadioBtn.visible = falso;
                } altrimenti {
                    this.RadioBtn.visible = allineano;
                }
                se (RadioBtn.visible) {
                    this.RadioBtn.x = super.label.x
                    super.label.x = this.RadioBtn.x + 17;
                    this.RadioBtn.y = super.label.y+8;
                }
            }
        }
      
      
}
}

________________________________________

2- il codice di applicazione è:

backgroundColor= " #FFFFFF " di http://www.adobe.com/2006/mxml " >

      
            

                  
                        
                        

                  


                  
                        
                        
                        
                        
                        
                  


                  
                        
                        
                  
 

            

      


      
                              importazione mx.collections.ArrayCollection;
                  importazione mx.rpc.events.ResultEvent;
                  importazione mx.controls. Allarme;


                  funzione riservata TreeClickHandler (evento: Evento): vuoto
                  {
                        selectedXmlList di varietà: XMLList;
                        itemObject di varietà: Oggetto = event.currentTarget.selectedItem;

                        se (! myTree.dataDescriptor.isBranch (itemObject)) {
                              selectedXmlList = myData.item.part. (== itemObject.@parentid del @parentid);
                              processSelection (selectedXmlList, itemObject.@id);
                        }

                  }

                  processSelection riservato di funzione (lista: XMLList, Objid: Stringa): vuoto {
                        articolo di varietà: XML;
                        per ciascuno (articolo nella lista) {
                              se (item.@id! =Objid)
                              {
                                    item.@checked = falso;
                              } altrimenti
                              {
                                    item.@checked = allineano;
                              }
                        }
                  }

            ]] >
      



      
                                     id= " myTree "  
                         itemClick= " TreeClickHandler (evento) “      
                         itemRenderer= " RadioButtonTreeItemRenderer "
                         showRoot= " falso "
                         width= " 100% "  
                         height= " 100% "
                         labelField= " @label "                                            
                         folderClosedIcon= " {posizione di segnale minimo} “
                         folderOpenIcon= " {posizione di segnale minimo} “
                         defaultLeafIcon= " {posizione di segnale minimo} “
                         dataProvider= " {myData} “
                         openItems= " {myData. .item} “>
            


      



Altre soluzioni  
 
programming4us programming4us