Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    165

    ComboBox con TextFormat

    Salve, ho un problema con i TextFormat attribuito ai ComboBox.
    Creo due CB dinamicamente, e cambio il tipo di carattere e la sua dimensione.
    Al cambiamento di valore del primo CB è associata una funzione che cambia i valori del secondo CB, però purtroppo, al ritorno dalla funzione mi ritrovo i caratteri piccoli come la componente di default. Perchè?
    Di seguito c'è un codice d'esempio. (Per provare potete fare copia e incolla perchè è completo)

    Grazie!!

    codice:
    import fl.controls.ComboBox;
    import fl.data.DataProvider;
    
    var comicSansTF:TextFormat = new TextFormat();
    comicSansTF.font = "Arial";
    comicSansTF.size = 14;
    
    
    var	zon:Array = [ ];
    var	zon2:Array = [ ];
    
     zon = [
    	{label:"Geographical Areas", data:"0"},
    	{label:"Naples and Vesuvius area", data:"napoli"},
    	{label:"Sorrentine Peninsula and Capri", data:"sorrento"},
    	{label:"Phlegrean Fields, Ischia and Procida", data:"flegrei"},
    	{label:"Caserta and the Domitian Coast", data:"caserta"},
    	{label:"Sannio", data:"sannio"},
    	{label:"Matese", data:"matese"},
    	{label:"Irpinia", data:"irpinia"},
    	{label:"Salerno and Amalfi Coast", data:"salerno"},
    	{label:"Cilento and Paestum", data:"cilento"},
    	];
    
     zon2 = [
    	{label:"Geographical Areas", data:"0"},
    	{label:"Naples and Vesuvius area", data:"napoli"},
    	{label:"Sorrentine Peninsula and Capri", data:"sorrento"},
    	{label:"Phlegrean Fields, Ischia and Procida", data:"flegrei"},
    	{label:"Caserta and the Domitian Coast", data:"caserta"},
    	{label:"Sannio", data:"sannio"},
    	{label:"Matese", data:"matese"},
    	{label:"Irpinia", data:"irpinia"},
    	{label:"Salerno and Amalfi Coast", data:"salerno"},
    	{label:"Cilento and Paestum", data:"cilento"},
    	];
    
    	
    var myComboBox:ComboBox = new ComboBox();
    myComboBox.addEventListener(Event.CHANGE, cambia_zona);
    myComboBox.width =300;
    myComboBox.height =24;
    
    myComboBox.textField.setStyle("textFormat", comicSansTF);
    myComboBox.dropdown.setRendererStyle("textFormat", comicSansTF);
    myComboBox.dataProvider = new DataProvider(zon);
    myComboBox.move(10, 10);
    addChild(myComboBox);
    
    var myComboBox2:ComboBox = new ComboBox();
    myComboBox2.width =300;
    myComboBox2.height =24;
    
    myComboBox2.textField.setStyle("textFormat", comicSansTF);
    myComboBox2.dropdown.setRendererStyle("textFormat", comicSansTF);
    myComboBox2.dataProvider = new DataProvider(zon2);
    myComboBox2.move(10, 40);
    addChild(myComboBox2);
    
    function cambia_zona (event:Event):void {
    //trace("ciao");
    if ((myComboBox.selectedItem.data == "napoli") || (myComboBox.selectedItem.data == "sorrento") || (myComboBox.selectedItem.data == "flegrei") || (myComboBox.selectedItem.data == "caserta") || (myComboBox.selectedItem.data == "sannio") || (myComboBox.selectedItem.data == "matese") || (myComboBox.selectedItem.data == "irpinia") || (myComboBox.selectedItem.data == "salerno") || (myComboBox.selectedItem.data == "cilento"))
       {
    	zon2 = [
    {label:"All Municipality", data:"tutti"},
    		   {label:"Agerola", data:"Agerola"},
    {label:"Anacapri", data:"Anacapri"},
    {label:"Capri", data:"Capri"},
    {label:"Gragnano", data:"Gragnano"},
    {label:"Lettere", data:"Lettere"},
    {label:"Massa Lubrense", data:"Massa Lubrense"},
    {label:"Meta", data:"Meta"},
    {label:"Piano di Sorrento", data:"Piano di Sorrento"},
    {label:"Pimonte", data:"Piamonte"},
    {label:"Sant'Agnello", data:"Sant'Agnello"},
    {label:"Sorrento", data:"Sorrento"},
    {label:"Vico Equense", data:"Vico Equense"},	
    ];
    //myComboBox.textField.setStyle("textFormat", comicSansTF);
    //myComboBox.dropdown.setRendererStyle("textFormat", comicSansTF);	
    myComboBox2.textField.setStyle("textFormat", comicSansTF);
    myComboBox2.dropdown.setRendererStyle("textFormat", comicSansTF);
    //myComboBox.dataProvider = new DataProvider(zon);    
    myComboBox2.dataProvider = new DataProvider(zon2);
    addChild(myComboBox2);
    }
    }

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Elimina o commenta tutte le righe di codice alla fine della condizione if :

    Codice PHP:
    //myComboBox.textField.setStyle("textFormat", comicSansTF);
    //myComboBox.dropdown.setRendererStyle("textFormat", comicSansTF);
    //myComboBox2.textField.setStyle("textFormat", comicSansTF);
    //myComboBox2.dropdown.setRendererStyle("textFormat", comicSansTF);
    //myComboBox.dataProvider = new DataProvider(zon);    
    //myComboBox2.dataProvider=new DataProvider(zon2);
    //addChild(myComboBox2); 
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    165
    Originariamente inviato da Sleter
    Ciao

    Elimina o commenta tutte le righe di codice alla fine della condizione if :

    Codice PHP:
    //myComboBox.textField.setStyle("textFormat", comicSansTF);
    //myComboBox.dropdown.setRendererStyle("textFormat", comicSansTF);
    //myComboBox2.textField.setStyle("textFormat", comicSansTF);
    //myComboBox2.dropdown.setRendererStyle("textFormat", comicSansTF);
    //myComboBox.dataProvider = new DataProvider(zon);    
    //myComboBox2.dataProvider=new DataProvider(zon2);
    //addChild(myComboBox2); 
    ciao
    ciao, grazie per la risposta, ma così non funziona!
    Se tolgo "myComboBox2.dataProvider=new DataProvider(zon2);"
    il CB non viene aggiornato (è vero che il carattere rimane grande, ma accade proprio perchè non è cambiato niente!)

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Si ho visto ma tutte queste righe sono doppiate all'interno della condizione if e a parte quella che crea il nuovo contenuto, le altre mi sembrano inutili.

    Hai notato che l'errore non si verifica se fai l'addChild del secondo comboBox dopo che l'utente ha fatto la scelta nel primo ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    165
    Originariamente inviato da Sleter
    ...
    Hai notato che l'errore non si verifica se fai l'addChild del secondo comboBox dopo che l'utente ha fatto la scelta nel primo ?
    E come posso fare quindi? Non ne ho idea..

    Grazie

  6. #6
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Puoi risolvere così:
    Sostituisci le ultime righe con queste:

    Codice PHP:
    removeChild(myComboBox2);
    var 
    myComboBox3:ComboBox = new ComboBox();
    myComboBox3.width=300;
    myComboBox3.height=24;
    myComboBox3.move(1040);
    myComboBox3.textField.setStyle("textFormat"comicSansTF);
    myComboBox3.dropdown.setRendererStyle("textFormat"comicSansTF);
    myComboBox3.dataProvider=new DataProvider(zon2);

    addChild(myComboBox3); 
    Praticamente il comboBox2 viene rimosso e sostituito da un terzo comboBox con il nuovo contenuto.

    Probabilmente non è la soluzione più appropriata ma credo possa essere un'indicazione verso la direzione su cui lavorare.
    Sembra che all'uscita dalla funzione il DataProvider(zon2) vada in conflitto con quello precedente annullando il textFormat.

    Non conosco molto questo componente e non saprei che altro suggerirti.

    ciao

  7. #7
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    mmhhh ... non ci siamo.

    Se si fa una seconda scelta nel primo comboBox si inkioda tutto !

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    165
    Originariamente inviato da Sleter
    mmhhh ... non ci siamo.

    Se si fa una seconda scelta nel primo comboBox si inkioda tutto !
    Eh si!
    ho provato anche a rimuovere il CB con removeChild e poi a rimetterlo ma non cambia niente

  9. #9
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    ... invece del

    Codice PHP:
    removeChild(myComboBox2); 
    metti:
    Codice PHP:
    myComboBox2.visible=false
    E subito dopo aver creato il comboBox2 con il costruttore new, metti:

    Codice PHP:
    myComboBox2.visible=true
    In questo modo il comboBox2 non viene rimosso ma solo reso invisibile e quindi riselezionando un nuovo elemento nel comboBox1 sembra funzionare regolarmente.

    ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    165
    Originariamente inviato da Sleter
    ... invece del

    Codice PHP:
    removeChild(myComboBox2); 
    metti:
    Codice PHP:
    myComboBox2.visible=false
    E subito dopo aver creato il comboBox2 con il costruttore new, metti:

    Codice PHP:
    myComboBox2.visible=true
    In questo modo il comboBox2 non viene rimosso ma solo reso invisibile e quindi riselezionando un nuovo elemento nel comboBox1 sembra funzionare regolarmente.

    ciao
    scusami che intendi per "new" ??? il ComboBox gia è cretao non posso crearne uno con lo stesso nome. Potresti farmi un esempio più chiaro? Grazie! Puoi anche modificare il codice che ho postato all'inizio e ripostarlo.
    Ancora grazie per l'interesse!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.