Vinicius, Há uma outra alternativa para passar informações entre classes, sem criar dependencia entre seu componente e a Application o que como vc mesmo sabe não é recomendável).
Como o Mário sugeriu, evento personalizados é ma maneira de passar informações do componente para o 'caller'. Agora lembre-se que no Flex, quando vc cria um componente (.mxml ou .as) vc está na verdade criando uma nova classe. Seu componente que implementa uma TitleWindow está na verdade extendendo a classe TitleWindow. Você pode se aproveitar deste fato e implementar um API para sua classe (componente). Você pod definir propriedades de entrada/saida da sua classe e deste modo passar/receber informações entre o 'caller' e teu componente. Deixa eu tentar explicar com um exemplo. Digamos que teu componente seja SelecionaBairro.mxml: <mx:TitleWindow ... <mx:Script> //-------------- // Interface para SelecionaBairro //------------- //-------------- // argumentos de entrada //------------- // se vc tiver algum parâmetro a passar para o componente vc declara a propriedade aqui: public var parametroDeEntrada1:String; //-------------- // argumentos de saida //------------- public var bairroSelecionado:String; // este é o argumento de 'saída' do meu componente </mx:Script <mx:DataGrid... </mx:TitleWindow> Agora, como vc pode usar este API... Na tua aplicação (ou em algum componente da tua aplicação) vc usa algo como: ..... var pop:SelecionaBairro = new SelecionaBairro(); // aqui vc está criando uma instância da tua classe // a variável pop referencia um objeto da classe SelecionaBairro e através dela vc tem acesso a qualquer propiedade exposta (public) pela classe // vc pode por exemplo enviar informações para o objeto... pop.parametroDeEntrada1 = 'valor para o paremetro 1'; // depois de posicionar os parametros de entrada vc pode ativar o TitleWindow PopupManager.addPopup(pop,this); // por exmplo via popup window ou através de qqr outro mecanismo (addChild, ...) // agora vc precisa interceptar qdo tua classe completou sua tarefa, que obviamente tem que ser via eventos in Flex // isto pode ser através de um evento especial ou no meu exemplo poderia ser no CLOSE do popup pop.addEventListener(CloseEvent.CLOSE,selecionaBairroDone); Quando SelecionaBairro for fechado selecionaBairroDone será executado, e para ter acesso aos argumentos de saida da classe o método seria algo assim: private function selecionaBairroDone(ev:CloseEvent):void { var pop:SelecionaBairro = ev.currentTarget as SelecionaBairro; // aqui eu recupero a instância de SelecionaBairro criada anteriormente // lembre-se que 'pop' estará apontando para o mesmo objeto criado anteriormente, com todos as variáveis e propriedades // daquele objeto exatamente como estava no momento em que o popup foi fechado // assim através de 'pop' eu posso ter acesso aos argumentos de saída, como definidos no API de SelecionaBairro bairro = pop. bairroSelecionado; // copia o valor do bairro selecionado, que foi posicionado dentro de SelecionaBairro } Este mecanismo evita a necessidade de criar eventos personalizados. A implementação de SelecionaBairro continua encapsulada e independente do utilizador A única coisa que fica 'exposta' é a interface entre SelecionaBairro e o utilizador através de propriedades publicas. abraço julio ps: tem uma coisa nesta técnica que fica um pouco prejudicada do ponto de vista de encapsulamento completo dos componentes. No flex, qualquer componente utilizado por exemplo dentro de SelecionaBairro se torna público. isto é, o datagrid,e outros componentes em SelecionaBairro, é apresentado como uma propriedade pública. não há uma maneira simples de evitar este 'side effect', mas se vc simplesmente ignorar propriedades que não façam parte do API de SelecionaBairro, não há com que se preocupar. mas esta uma discussão para 'puristas' e não afeta a validade desta técnica. On Mar 13, 6:08 pm, Mário Júnior <juninho...@gmail.com> wrote: > Vinicius, vc tem q usar eventos personalizados (custom events) que deverão > ser disparados (dispatchEvent) no momento que sua janela fechar. Nesses > eventos vc pode transportar dados da forma que quiser, e é aí que vc irá > transportar os dados da sua consulta. > > Assim, vc torna seu componente (a janela de consulta) bem mais reutilizável > e totalmente desacoplado do seu application (nada de [Bindable] public var > na app raiz). > > Só não se esqueça de "amarrar" um listener na janela antes de mostra-la na > tela. > (janela.addEventListener(SeuEventoProprio.NOME_EVENTO, funcaoExecutar); > > Procure no histórico por pelas palavras chaves q deixei entre parenteses, ou > até mesmo na web, que vc vai achar material para estudo. > > Bons estudos. > > 2009/3/13 Vinícius Velasco <irc.vinic...@gmail.com> > > > > > Olá PessoALL, > > > Estou com a seguinte duvida: > > Eu tenho uma tabela de bairros. No cadastro de pessoa eu tenho o campo > > bairro que eu digito somente o código do bairros e ele me traz o nome, até > > ai tudo bem. Na minha tela de pessoas eu chamo uam titlewindow que tem uma > > grid que me mostra todos os bairros e nela tem um textinput pra pesquisar eu > > seleciono o bairro desejado e ela fecha trazendo para o cadastro de pessoas > > o nome do bairro, acontece que eu fiz no app um variavel bindable e uso ela > > pra carregar o meu textinput (o que é errado) outro problema é que eu tenho > > mais campos assim então tive que fazer para cada consulta uma titlewindow e > > o pior em uma tela q tem cidade nascimento cidade atual eu preciso fazer uma > > POG federal usando variaveis na app e flag's. Bom eu consigo criar uma > > titlewindow extendida e passar os valor que quero como em qual tabela > > peskisar e etc soh que eu nao consigo retornar o valor selecionado. Alguem > > teria alguma dica ou material pra fazer isso? > > > Desculpem o tamanho do texto > > > Desde ja agradeço > > > -- > > Bel. Vinícius Velasco > > Analista de Desenvolvimento - Ábaco > > MSN: ircvinic...@hotmail.com > > Skype: ircvinicius > > Fone: 66 9206 6966 > > Rondonópolis - Mato Grosso - Brasil > > "Tudo Posso Naquele que me Fortalece" Fil 4:13 > > -- > Mário Júnior > Programador Java / Adobe Flexhttp://blog.mariojunior.com --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---