Cheguei no flex trabalhando de forma errada, totalmente procedural que erdei do velho e bom VB. Minha necessidade era dentro de uma janela MDI chama a função que tava dentro do Menubar para abrir uma janela referente a solicitação. Mas pensando em manutenção e reutilização do código precisei reaproveitar uma rotina. Com isso não queria chapar Application.application no projeto.
Qual foi a solução
1º – Criar um evento personalizado
2º – Disparar o evento no systemManager
3º – Escutar o evento no MenuBar, tambem pelo systemManager
Criando o evento
package br.com.webinovacoes.eventos
{
import flash.events.Event;
import mx.managers.SystemManager;
public class EventMenuJanela extends Event
{
private var _janela:String;
public function get janela():String{
return this._janela;
}
public function set janela ( v:String):void {
this._janela = v;
/**
// Instancia, configura e dispara o ChangeEvent
var evt:EventMenuJanela = new EventMenuJanela(“janela”);
evt.janela= v;
dispatchEvent( evt );
*/
}
/** Construtor */
public function EventMenuJanela(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event {
return new EventMenuJanela ( type );
}
}
}
Disparando o evento
frm.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void{
// Instancia, configura e dispara o EventMenuJanela
evtMenuJanela = new EventMenuJanela("janela");
evtMenuJanela.janela = _service;
systemManager.dispatchEvent( evtMenuJanela );
});
Escutando o evento dentro do menubar
...
import br.com.webinovacoes.eventos.EventMenuJanela;
...
/**
* Inicia o Form
*/
private function inicia():void{
// Escuta o evento e redireciona para rotina interna do Menu
systemManager.addEventListener("janela",abreJanela);
}
10 Comentários até o momento
Deixe um comentário
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Blz hein!! Descobriu e passou pra gente o conhecimento, parabéns e valeu´s!
Comentário por CarlosGarcia 20 20UTC Março 20UTC 2008 @ 09:58Carlos é minimo q posso fazer em comparação q a galera faz. E outra coisa pra aprender o melhor jeito é ensinando
Comentário por betofiote 20 20UTC Março 20UTC 2008 @ 10:04Cara me desculpe mas tenho umas duvidas em relaçao ao seu codigo. Por favor me ajude a entender ^^
public function EventMenuJanela(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
Esse super() quer dizer que a nova clase tera todas as propriedades e metodos do classe pai?
_______________________________________________
override public function clone():Event {
return new EventMenuJanela ( type );
}
}
}
Porque vc sobrescreve a clone()?
_______________________________________________
systemManager.addEventListener(”janela”,abreJanela);
Essa função abrirá uma janela MDI especifica certo? poderia postar como ficou a função abreJanela? ^^
______________________________________________
No geral eu entendi que vc customizou um evento e
atrelou a ele a execução da função abre janela certo?
Desculpe novamente se estiver sendo chato, mas tenho muita sede de entender como isso funciona e já estou ficando louco aqui ^^
Desde já muito obrigado.
Comentário por Eliézer 20 20UTC Maio 20UTC 2008 @ 17:37Só para registrar meu e-mail correto, no post anterior eu errei no dominio.
Comentário por Eliézer 20 20UTC Maio 20UTC 2008 @ 17:41Olá Beto!
Cara estou com umas duvidas aqui poderia me ajudar a entender melhor seu codigo? ^^
Acredito que na função abreJanela vc faça chamdas aos metodos set e get janela certo? poderia postar como ficou sua função abreJanela?
__________________________________________________
super(type, bubbles, cancelable);
esse super ai seria pra herdar os metodos da super classe?
__________________________________________________
override public function clone():Event {
return new EventMenuJanela ( type );
}
}
}
Pq é necessario sobrescrever esse metodo?
_________________________________________________
Desculpe se estou sendo chato, mas quero
realmente entender como tudo isso funciona e já estou ficando louco aqui, a cada codigo que leio me confundo mais ^^
Desde já obrigado!
Eliézer.
Comentário por Eliézer 21 21UTC Maio 21UTC 2008 @ 09:20Eliézer
Essa função ela é responsavel por atualizar a chamada clone do evento, se não reescrever ela, qdo vc clonar o evento ele vai retornar o evento da classe pai.
Comentário por betofiote 25 25UTC Junho 25UTC 2008 @ 07:24Olá beto queria te parabenizar pelo blog e pelo projeto WEB Inovações achei muito legal tuas ideias, me deparei com uma duvida e resolvi entrar em contato com você.
No projeto Web Inovações você tem uma opção multi telas onde dá a opção de quatro desktops então queria saber se você utilizou algum componente ou tem alguma logica especifica.
Grato
Yelken Heckman
Comentário por Yelken Heckman 12 12UTC Maio 12UTC 2009 @ 15:25Programador Visual
Valeu cara, ajudou bastante.
Comentário por Cristian 22 22UTC Junho 22UTC 2009 @ 18:29Gostei do seu projeto http://www.webinovacoes.com.br/ sera que tinha como disponibilizar o codigo fonte do sistema ou passar um exemplo da tela principal junto com os menus. Desde ja agradeco
Comentário por Ricardo 22 22UTC Agosto 22UTC 2009 @ 16:16Ricardo,
Essa é uma aplicação comercial, ainda não tive tempo para disponibilizar partes do codigo.
Comentário por betofiote 22 22UTC Agosto 22UTC 2009 @ 16:39