Eu acho que fiz uma mistura do que vcs falaram e deu certo. Veja se
fiz corretamente.
Na aplicacao eu seto o label do botao(Inserir ou Alterar) do
componente. No componente verifico qual é o label do botao(Inserir ou
Alterar). Para cada situacao eu chamo uma funcao que faz um dispatch.

Na aplicacao chamo uma funcao init que fica escutando esse dispatch.
Veja os codigos abaixo. Será que foi isso que vcs quiseram dizer?

Componente:
<fx:Script>
                <![CDATA[
                        [Bindable]
                        public var labelBtn;
                        
                        [Bindable]
                        public var labelpanel;
                        
                        private function getAcao():void{
                                if(labelBtn == "Alterar"){
                                        dispararEventoAlterar();        
                                }else if(labelBtn == "Inserir"){
                                        dispararEventoIncluir();
                                }
                        }
                        private function dispararEventoAlterar():void{
                                dispatchEvent(new Event('editarGrupo', true))
                        }
                        
                        private function dispararEventoIncluir():void{
                                dispatchEvent(new Event('incluirGrupo', true))
                        }
                        
                ]]>
        </fx:Script>
        <s:Button x="89" y="118" label="{labelBtn}" id="btnGrupo" 
click="getAcao()"  />


Aplicacao

<comp:GrupoComp labelBtn="Inserir" labelpanel="Cadastro"
id="painelCadastroGrupo" />

private function init():void
                        {
                                
this.addEventListener("incluirGrupo",inserirGrupo);
                                
this.addEventListener("alterarGrupo",alterarGrupo);
                        }





Em 20 de novembro de 2011 10:51, Clayton <marquesclayt...@gmail.com> escreveu:
> A forma correta é fazer o click do botão do componente disparar um evento
> customizado, desta forma qualquer outro que o utilizar poderá escutar o
> evento e executar o método que lhe convier.
>
> Em 20 de novembro de 2011 02:10, Cristian Edson Göhl
> <cristian.g...@live.com> escreveu:
>
>> Opa Marcelo,
>>
>> cara tu até poderia fazer algo utilizando assim:
>>
>>
>>           protected function bMarcelo_clickHandler(event:MouseEvent):void
>>           {
>>               //codigo
>>           }
>>
>>           protected function bMarcelo_clickHandler2(event:MouseEvent):void
>>           {
>>               //codigo
>>           }
>>
>>           bMarcelo.removeEventListener(MouseEvent.CLICK,
>> bMarcelo_clickHandler); // Assim você remove um evento.
>>           bMarcelo.addEventListener(MouseEvent.CLICK,
>> bMarcelo_clickHandler2); // Assim adiciona um evento.
>>
>> Nesse sentido você conseguiria fazer funcionar, porém teria que ter
>> cuidado de sempre remover um evento adicionado, para não ficar com mais de
>> 1.
>>
>> Não aconselho fazer algo deste tipo.
>>
>> Use alguma outra verificação para saber o que fazer, talvez até pelo text
>> do button,
>>
>>               if (bMarcelo.label == "asd")
>>               {
>>                   // Fazer tal coisa.
>>               }
>>               else
>>               {
>>                   // tal coisa
>>               }
>>
>> Assim só precisa uma função, que já pode deixar definida no click pelo
>> mxml, é mais rápido, menos código, e mais fácil de entender.
>>
>> Abraço.
>> -----Original Message----- From: Marcelo A
>> Sent: Saturday, November 19, 2011 11:51 PM
>> To: flexdev@googlegroups.com
>> Subject: [flexdev] mudar click do botao que esta em um componente
>>
>>
>> Pessoal,
>>
>> tenho um componente que é um Panel e nele tenho um botao.
>> Na minha aplicacao chamo esse componente e altero o label do botao por
>> exemplo. O que eu nao sei é como faço para passar para o click do
>> botao a function que desejo.
>> Pois posso ter esse componente Panel em dois momentos diferentes da
>> minha aplicacao e quero que ele tenha funcionalidades diferentes no
>> click do botao.
>>
>> Abaixo coloco o exemplo que estou falando.
>>
>> Obrigado.
>> []'s
>> Marcelo
>>
>> Componente:
>>
>> <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009";
>> xmlns:s="library://ns.adobe.com/flex/spark"
>> xmlns:mx="library://ns.adobe.com/flex/mx"
>> width="250" height="200" title="{labelpanel}" >
>> <fx:Declarations>
>> <!-- Place non-visual elements (e.g., services, value objects) here -->
>> </fx:Declarations>
>> <fx:Script>
>> <![CDATA[
>> [Bindable]
>> public var labelBtn;
>>
>> [Bindable]
>> public var labelpanel;
>>
>> ]]>
>> </fx:Script>
>> <s:Button x="89" y="118" label="{labelBtn}" id="btnGrupo"   />
>> <s:TextInput id="descricaoGrupo" x="89" y="43" />
>> <s:Label x="37" y="49" text="Grupo"/>
>> </s:Panel>
>>
>>
>> Aplicacao
>>
>> <comp:GrupoComp labelBtn="Inserir" labelpanel="Cadastro"
>> id="painelCadastroGrupo" />
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
>> Para sair da lista, envie um email em branco para
>> flexdev-unsubscr...@googlegroups.com
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
>> Para sair da lista, envie um email em branco para
>> flexdev-unsubscr...@googlegroups.com
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>
>
>
>
> --
> Clayton Marques Pereira
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a