Comunidad de diseño web y desarrollo en internet online

Problemas con combobox

Citar            
MensajeEscrito el 03 Jun 2009 12:34 am
Hola colegas, veran tengo una aplicacion principal donde tengo un Tree (cargado con xml) en el cual al hacer click en las diferentes secciones por medio de un ModuleLoader y cambiando su url voy cargando los diferentes modulos que he creado.

Tres modulos son muy similares y en los tres cargo un combox de meses a travez de un archivo xml, el cual tiene la sig. forma:

xml escribió:

<?xml version="1.0" encoding="utf-8"?>
<Meses>
<Mes>
<data>1</data>
<label>Enero</label>
</Mes>
<Mes>
<data>2</data>
<label>Febrero</label>
</Mes>
.....


Por alguna razon cuando visito la primera vez el modulo no tengo ningun problema, pero cuando navego hacia otro menu (nodo del Tree) y regreso nuevamente a ver el mismo modulo ya no puedo escoger ninguna opcion del combo, esto me pasa con flash 10, cuando uso el flash player 9 lo que sucede es que me aparece el sig. error:

Debugger escribió:

TypeError: Error #1034: Error de conversión forzada: no se puede convertir mx.managers::PopUpManagerImpl@55bcce1 en mx.managers.IPopUpManager.
at mx.managers::PopUpManager$/get impl()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\PopUpManager.as:68]
at mx.managers::PopUpManager$/addPopUp()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\PopUpManager.as:169]
at mx.controls::ComboBox/getDropdown()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\ComboBox.as:1459]
at mx.controls::ComboBox/displayDropdown()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\ComboBox.as:1552]
at mx.controls::ComboBox/downArrowButton_buttonDownHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\ComboBox.as:1801]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298]
at mx.controls::Button/http://www.adobe.com/2006/flex/mx/internal::buttonPressed()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\Button.as:2504]
at mx.controls::Button/mouseDownHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls\Button.as:2750]



Perdon por haber puesto todo el error pero es que no se cual puede ser la razon. Ademas comentarles que los demas modulos aun no estan creados, pero en el moduloloader, manejo el error cargando un modulo por default de la sig. manera.

Flex escribió:

public function CargarModuloDefault():void
{
Modulo.url=RootWeb + "modulos/Default.swf";
Modulo.loadModule(); //Cargo el modulo por default
}

Si quieren que ponga mas codigo, con gusto lo pondre, incluso mañana subire el codigo casi completo para ver si alguien puede hecharme la mano con esto que me trae loco.

Gracias por haber leido hasta aca.

Por sergestux

49 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Jun 2009 10:57 am
El error indica que estás usando el PopManager para abrir un PopUp y le estás pasando como argumento un elemento que no implementa IPopUpManager

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Jun 2009 10:54 pm
Gracias, por la respuesta, el problema es que no se por que me aparece ese error si aparentemente cargo bien el combo, ahorita lo hago a traves de un xml de meses, ya lo intente tambien con un arreglo de datos y pasa lo mismo.

Subi por aca el codigo del programa, el cual pueden importar facilmente desde flex builder. Ya que como ya se me esta haciendo algo grande el codigo, cada vez se me hace mas dificil rastrear el error. Asi que lo siguiente lo entenderan mejor los que bajen y prueben el codigo, solamente hay que configurar correctamente el archivo config.as con la ip del servidor propio y los scripts que generan las ventas los modifique por unos resultados ficticios.

Tengo tres states, el primero es donde el usuario escogera la agencia donde quiere entrar, el segundo state es donde se ingresaran usuario y password, el tercer estado es donde ya muestro el menu (cargado con un xml). Actualmente los unicos modulos que he programado de cada agencia son, son los del submenu Logistica, la primera opcion que dice "Venta de unidades por punto de venta".
En flash 10 al escoger un rango de fechas la primera vez en el reporte, no hay ningun problema, pero al escoger alguna otra opcion del menu y volver al mismo reporte ye intentar escoger nuevamente un mes, sencillamente no se puede escoger nada.
En flash 9, al escoger un rango de fechas la primera vez en el reporte tampoco hay problema, el problema aqui surge al darle click en la opcion salir e intentar con otra agencia al intentar escoger nuevamente un mes de combo del reporte, es que me surge el mensaje de error que mencione antes.

Perdon por postear tanto pero como mencione, me trae loco este problema ya que voy a usar varios combos en varios reportes me gustaria que me ayuden a solucionar este problema.

Gracias, por los aportes o sugerencias que me puedan dar

Por sergestux

49 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Jun 2009 11:06 pm
Aja, bajarse tu proyecto, instalarlo, analizarlo ... mmm ... vale, quizás otro día

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Jun 2009 11:58 pm
Reduje a lo mas que pude el proyecto en cuestion y lo he subido por aca, aun asi, me sigue marcando el mismo error en el combobox, al navegar entre una y otra opcion.

No pretendo que hagan mi trabajo, solo pido una pequeña ayuda, ya que este es un foro de ayuda donde hay muchos expertos en tecnologias como flex.

Este es el codigo de la aplicacion principal, donde cargo los modulos

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
   layout="absolute" verticalAlign="middle" horizontalAlign="center"
   backgroundColor="white" creationComplete="xmlMenu.send();"
    top="0" left="0" width="100%" height="100%" >
<mx:Script source="config.as"/>
   <mx:HTTPService id="xmlMenu" url="{RootWeb + 'Menu.xml'}" resultFormat="e4x" method="POST" result="CargarMenu();"/>
            
   <mx:Script>
      <![CDATA[      
      import mx.events.ItemClickEvent;

      //Carga el menu correspondiente      
      public function CargarMenu():void
      {
         myTree.dataProvider=xmlMenu.lastResult.menu;
      }         
      
      //Se activa cuando se elige una opcion en el menu del lado derecho
        public function treeChanged(event:Event):void {
          var selectedNode:XML;
          var RutaModulo:String;
          selectedNode=Tree(event.target).selectedItem as XML;
          
         RutaModulo=RootWeb + "modulos/" + selectedNode.@id + ".swf";
         Modulo.url=RutaModulo;
         Modulo.loadModule();      //Cargo el modulo
      }

      ]]>
   </mx:Script>
      
    <mx:Panel id="PanelPrincipal" x="7" y="9" paddingTop="0" paddingLeft="0" height="100%" width="100%">               
      <mx:HDividedBox width="100%" height="100%" paddingLeft="0" paddingTop="0">
         <mx:VBox height="100%" width="15%" paddingLeft="5" paddingTop="5">
            <mx:Tree id="myTree" width="100%" height="100%" labelField="@label" 
               dataTipField="@label" showDataTips="true" showRoot="false"
                change="treeChanged(event)" borderThickness="2" cornerRadius="4"/>
         </mx:VBox> 
         <mx:Panel id="Main" title="Venta de unidades por punto de venta"                     
            height="100%" width="85%" paddingTop="5" paddingLeft="5">                  
            <mx:ModuleLoader id="Modulo" width="100%" height="100%"/>
         </mx:Panel>
      </mx:HDividedBox>
   </mx:Panel>
</mx:Application>


Y este es el codigo de uno de los modulos donde cargo los combos (solo tengo dos modulos a manera de ejemplo, probablemente por ahi esta el error:

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Module layout="horizontal" xmlns:mx="http://www.adobe.com/2006/mxml" 
   verticalAlign="middle" 
   creationComplete="xmlMeses.send();">
   <mx:Script source="../config.as"/>
   
   <mx:HTTPService id="xmlMeses" url="{RootWeb + 'Meses.xml'}"  resultFormat="e4x"
        result="CargarMeses();" showBusyCursor="true" useProxy="false"/>
    
<mx:Script>
   <![CDATA[
    
    public function CargarMeses():void
    {
      var Hoy:Date = new Date();
      cmbMes.dataProvider=xmlMeses.lastResult.Mes;
       cmbMes.selectedIndex=Hoy.getMonth();      //Seleccione el mes actual      
    }
   ]]>
</mx:Script>

   <mx:Canvas label="Filtro" width="100%">
      <mx:ComboBox id="cmbMes"/>
   </mx:Canvas>   

</mx:Module>


El codigo del archivo xml, lo mencione arriba en este mismo post

Por sergestux

49 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Jun 2009 10:51 am
El error apunta a un PopUp, no a un combo, ¿estás usando PopupManager en algún lado?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jun 2009 01:26 pm
Que yo sepa no, solo el ComboBox en los modulos pero no se si sea necesario importar alguna libreria para poder usarlo correctamente.

Estaba pensando que a lo mejor el problema era al cargar el modulo ya que tenia este codigo:

Modulo.url=RutaModulo;
Modulo.loadModule(); //Cargo el modulo

Tenia la instruccion Modulo.loadModule(); de mas ya que segun lei, unicamente con cambiar la propiedad url del ModuleLoader basta para que se cargue el modulo nuevo. Pero ya lo comente y sigue marcando el mismo error.

He visto un problema similar en este link, pero no he podido adaptar la solucion a mi caso.

En concreto lo que sugieren es que cuando se vaya a abrir el menu, (en este caso si es un popup) que se compruebe si existe el popup, en caso de que no, que se vuelva a inicialiazar los datos del popup.

Código Flex :

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initMenus();"> 
   <mx:Script> 
      <![CDATA[
         import mx.events.DropdownEvent; 
         import mx.controls.Menu; 
         
         private function initMenus():void 
         { 
            var menu1:Menu = new Menu(); 
            menu1.dataProvider = [{label: "View 1, Item 1"}, {label: "View 1, Item 2"}, {label: "View 1, Item 3"}]; 
            pop1.popUp = menu1; 
         
            var menu2:Menu = new Menu(); 
            menu2.dataProvider = [{label: "View 2, Item 1"}, {label: "View 2, Item 2"}, {label: "View 2, Item 3"}]; 
            pop2.popUp = menu2; 
         } 
         
         private function popUpButton_open(evt:DropdownEvent):void {
            var popBtn:PopUpButton = evt.currentTarget as PopUpButton;
            
            if (!popBtn.popUp) {
               //trace("fixing...");
               initMenus();
               popBtn.open();
            }
         }
      ]]> 
   </mx:Script> 
   
   <mx:VBox width="100%" horizontalAlign="left"> 
      <mx:Label text="These first 5 steps seem to work just fine." fontStyle="italic"/> 
      <mx:Label text="1. Click View 1 Dropdown"/> 
      <mx:Label text="2. Click View 2 Dropdown"/> 
      <mx:Label text="3. Move slider to the Left"/> 
      <mx:Label text="4. Click View 1 Dropdown"/> 
      <mx:Label text="5. Click View 2 Dropdown"/> 
      <mx:Spacer height="5"/> 
      <mx:Label text="Steps 7 and 8 below have been failing for me...no menu anymore after moving the slider to the right." fontStyle="italic"/> 
      <mx:Label text="6. Move slider to the Right"/> 
      <mx:Label text="7. Click View 1 Dropdown"/> 
      <mx:Label text="8. Click View 2 Dropdown"/> 
   </mx:VBox> 
   
   <mx:DividedBox direction="horizontal" width="100%" height="100%"> 
      <mx:VBox width="100" height="100%" backgroundColor="0xCCCCCC" paddingLeft="10" paddingTop="10"> 
         <mx:LinkButton label="View 1" click="view.selectedChild=view1"/> 
         <mx:LinkButton label="View 2" click="view.selectedChild=view2"/> 
      </mx:VBox> 
      <mx:VBox height="100%" backgroundColor="0xCCCCCC"> 
         <mx:ViewStack id="view" width="100%" height="100%" creationPolicy="all"> 
            <mx:VBox id="view1" paddingLeft="10" paddingTop="10"> 
               <mx:PopUpButton id="pop1" label="View 1 Dropdown" open="popUpButton_open(event);"/> 
            </mx:VBox> 
            <mx:VBox id="view2" paddingLeft="10" paddingTop="10"> 
               <mx:PopUpButton id="pop2" label="View 2 Dropdown" open="popUpButton_open(event);"/> 
            </mx:VBox> 
         </mx:ViewStack> 
      </mx:VBox> 
   </mx:DividedBox>
   
</mx:Application>

Pienso que por ahi puede estar mi solucion, pero no doy en el clavo de que evento es el que debo validar del Combo, Click, Change...? ni que es lo que debo comprobar

Por sergestux

49 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Jun 2009 07:30 pm
El error parece andar por el PopUpButton, deberías revisar la función popUpButton_open, posiblemente alguno de los elementos no corresponda al tipo.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2009 02:29 pm
Por fin encontre la solucion a mi problema y esto es agregando el siguiente codigo a la aplicacion principal:

Código ActionScript :

import mx.managers.PopUpManager; 
private var popUp: PopUpManager;


Al parecer un problema similar surge cuando se quiere navegar en vez de modulos usando tabs.

Gracias Solisarg, por el apoyo y la atencion prestada ,-)

Por sergestux

49 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.