Eventos personalizados interagindo entre telas
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);
}
12 Responses to “Eventos personalizados interagindo entre telas”
Trackbacks / Pingbacks
- - 29/01/2010
- - 12/05/2010
Blz hein!! Descobriu e passou pra gente o conhecimento, parabéns e valeu´s!
Carlos é minimo q posso fazer em comparação q a galera faz. E outra coisa pra aprender o melhor jeito é ensinando
Cara 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.
Só para registrar meu e-mail correto, no post anterior eu errei no dominio.
Olá 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.
Elié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.
Olá 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
Programador Visual
Valeu cara, ajudou bastante.
Gostei 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
Ricardo,
Essa é uma aplicação comercial, ainda não tive tempo para disponibilizar partes do codigo.