Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Flash y Actionscript (http://www.forosdelweb.com/f16/)
-   -   Error, no puedo llamar una función (http://www.forosdelweb.com/f16/error-no-puedo-llamar-funcion-575496/)

cachoron4444 13/04/2008 07:54

Error, no puedo llamar una función
 
Tengo un problema, no puedo llamar a una función...

Código:

<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Script>
                <![CDATA[
                        private function modificarTexto():void
          {
            textos.text+= dg.selectedItem.nombre + '\n' ;
                    }
                ]]>
        </mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
    </mx:XMLList>


        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn headerText="Agregar">
                        <mx:itemRenderer>
                                <mx:Component>
                                        <mx:CheckBox label="Escoger" click="modificarTexto()"/>
                                </mx:Component>
                        </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

        <mx:TextArea id="textos"/>
       
</mx:Application>


Con ese código se supone que al seleccionar un checkbox me haría escoger el item del datagrid, pero no es así, me marca error, diciendo:
1180: Call to a possibly undefined method modificarTexto. componentesComplejos/src componentesComplejos.mxml line 53 1208094605728 122

Lo cual para mí resulta extraño, quiere decir que los componentes rendereados dentro de otros componentes no pueden llamar otras funciones??

Obvio que cuando saco el checkbox del datagrid si funciona. Ojala hacerse de esta manera, sino la solución sería pasar el texto del datagrid a un campo de texto externo si usar el checkbox y agregarlo con un boton al textarea...

Saludos.

falcatin 14/04/2008 15:08

Re: Error, no puedo llamar una función
 
no puedes llamar a una función porque actua como si fuera un componente nuevo.

Es como si este código de tu ej
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox label="Escoger" click="modificarTexto()"/>
</mx:Component>
</mx:itemRenderer>

Lo metieses en un componente nuevo (que de echo es lo que te aconsejo)
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:CheckBox label="Escoger" click="modificarTexto()"/>
</mx:HBos>
(Aunque realmente es lo mismo que el codigo de arriba, las dos formas son iguales)

No sabe que es modificarTexto() porque no existe en el componente, tendrías que llamar con un evento, Application.application... o cualquier historia al procedimiento modificarTexto.

cachoron4444 14/04/2008 19:01

Re: Error, no puedo llamar una función
 
Sale gracias... aun no consigo hacerlo funcionar simplemente no me deja...

No tengo la menor idea de como hacer que si lo reconosca, mediante un evento tampoco me ha resultado

falcatin 15/04/2008 02:33

Re: Error, no puedo llamar una función
 
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox label="Escoger" click="Application.application.modificarTexto()"/>
</mx:Component>
</mx:itemRenderer>

Intenta algo así.

cachoron4444 15/04/2008 02:59

Re: Error, no puedo llamar una función
 
Lo siento, lo intente pero sale ootro error =(

SAle este eerror --> Access of undefined property Application


que método usaste tu para tu list con checkboxes?

cachoron4444 15/04/2008 03:25

Re: Error, no puedo llamar una función
 
EAAAAAAAAAAAAAAAAA LO LOGREEE!!! FGRACIAS FALCATIN!!!!! A PARTIR DE TU CÓDIGO PUDE ENCONTRAR LA SOLUCIÓN

Código:

<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="components.*">
        <mx:Script>
                <![CDATA[
                        public function modificarTexto():void
          {
                  //import mx.controls.Alert;
                  //Alert.show("bien","bientos");
                  textos.text+= dg.selectedItem.name + '\n' ;
                    }
                ]]>
        </mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
    </mx:XMLList>

    <mx:Panel title="DataGrid Control Example" height="100%" width="100%"
        paddingTop="10" paddingLeft="10" paddingRight="10">

        <mx:Label width="100%" color="blue"
            text="Select a row in the DataGrid control."/>

        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn headerText="Agregar">
                        <mx:itemRenderer>
                       
                                <mx:Component>
                                        <mx:CheckBox label="Escoger"
                                                change="mx.core.Application.application.modificarTexto()"/>
                                </mx:Component>
                        </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

        <mx:TextArea id="textos"/>

        <mx:Form width="100%" height="100%">
            <mx:FormItem label="Name">
                <mx:Label text="{dg.selectedItem.name}"/>
            </mx:FormItem>
            <mx:FormItem label="Email">
                <mx:Label text="{dg.selectedItem.email}"/>
            </mx:FormItem>
            <mx:FormItem label="Phone">
                <mx:Label text="{dg.selectedItem.phone}"/>
            </mx:FormItem>
        </mx:Form>
       
    </mx:Panel>
</mx:Application>

Si te fijas sólo agregué public a la función privada para que components pudiera accesarla y agregue a Application.application antes mx.core. y listo!!!!!!!

grax por tu ayuda... saludos

TMeister 16/04/2008 10:32

Re: Error, no puedo llamar una función
 
El uso de "mx.core.Application" es una mala paractica y no deberia de usuarse, es como si usaramos _root en Flash :S

cachoron4444 16/04/2008 10:34

Re: Error, no puedo llamar una función
 
es que ´no me salía de otra manera.... intentaré usando otras prácticas...

enlinea777 30/01/2009 21:01

Respuesta: Re: Error, no puedo llamar una función
 
Cita:

Iniciado por TMeister (Mensaje 2366341)
El uso de "mx.core.Application" es una mala paractica y no deberia de usuarse, es como si usaramos _root en Flash :S

si dices eso por que no pones un ejemplo de que hacer en este caso.

yo tampoco se como llamar a la funcion cuando esta en un nuevo componente.
pero lo mas logico es asi.
para que no se rompan la cabeza buscando en google: 1180: Call to a possibly undefined method.
esta es la solucion:
Código PHP:



<mx:itemRenderer>
<
mx:Component>
<
mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<
mx:Script>
<![
CDATA[
public function 
modificarTexto():void 
{
//import mx.controls.Alert;
//Alert.show("bien","bientos");
textos.text+= dg.selectedItem.name '\n' ;
}
]]>
</
mx:Script>
<
mx:CheckBox label="Escoger" click="modificarTexto()"/>
</
mx:Application>
</
mx:Component>
</
mx:itemRenderer


a mi parecer esto me parece lo mismo que: "mx.core.Application" un que alquien diga lo contrario.(obio que no es lo mismo pues declaro la variable en la nueva aplicacion pero me parece que es innesecario.)

espero tener respuesta de ustedes.


La zona horaria es GMT -6. Ahora son las 17:55.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.