Leonardo, obrigado pelo ajuda, mas entendi muito não....

Qualquer dúvida estou a disposição.

*Robinho*
*Analista/Programador de Sistemas*
*Skype: robinhocne*
*"A fé em Deus nos faz crer no incrível, ver o invisível e realizar o
impossível."*


Em 24 de outubro de 2013 16:50, Leonardo Oliveira <
[email protected]> escreveu:

> Ha! O loader customizado é só uma extensão de loader:
>
> package Modulos.Financeiro.Componentes.CmpLoaderCustomizado
> {
> import flash.display.Loader;
>  public class LoaderCustomizado extends Loader
>  {
> public var paramCustom:Object = new Object();
>  public function LoaderCustomizado()
>  {
> super();
> }
> }
> }
>
> e as principais variáveis são essas:
> private var loaderCustomizado:LoaderCustomizado;
> private var bitmapData:BitmapData;
> private var loaderCustomizadoAbas:LoaderCustomizado;
> private var bitmapDataAbas:BitmapData;
>
> Em quinta-feira, 24 de outubro de 2013 16h46min43s UTC-2, Leonardo
> Oliveira escreveu:
>
>> Robinho, como eu não tenho problema nenhum em ajudar quem quer aprender,
>> dá uma olhada nesse código, é o que eu uso. Ele traz os ícones do banco em
>> um campo blob e monta em abas e em tree. Cada aba, que também têm seus
>> ícones, possui um tree. Já vou avisando aos corneteiros de plantão que fiz
>> o código quando estava aprendendo, há anos, nunca mais voltei nele pra
>> melhorar.
>>
>> private function rstSucessoGetMenus(evt:**ResultEvent):void{
>> if (evt.result != null){
>>  /*
>> * RECEBE OS MENUS
>> */
>> menus = new ArrayCollection(Array(evt.**result));
>>  /*
>> * MONTA ABAS (MENU PRINCIPAL)
>> */
>>  for(var i:uint; i<evt.result.length; i++){
>> if(evt.result[i].children != null){
>> var navigatorContent:**NavigatorContent = new NavigatorContent();
>>  navigatorContent.label = evt.result[i].label;
>> //navigatorContent.icon
>> navigatorContent.percentWidth = 100;
>>  navigatorContent.percentHeight = 100;
>> navigatorContent.id = "_tab"+navigatorContent.label.**replace(" ", "_");
>>  navigatorContent.**addEventListener(MouseEvent.**CLICK,
>> handlerSelectAba);
>> _abas.addChild(**navigatorContent);
>>  if(evt.result[i].icone != null){
>> loaderCustomizadoAbas = new LoaderCustomizado();
>>  loaderCustomizadoAbas.**paramCustom = navigatorContent;
>> loaderCustomizadoAbas.**contentLoaderInfo.**addEventListener(Event.**COMPLETE,
>> getBitmapDataAbas);
>>  loaderCustomizadoAbas.**loadBytes(evt.result[i].icone)**;
>> }
>> }
>>  }
>>  /*
>> * MONTA MENU TREE
>>  */
>> for(var j:uint=0; j<evt.result.length;j++){
>> if(evt.result[j].children != null){
>>  montarMenuTree(j);
>> return;
>> }
>> }
>>  }
>> }
>>  private function rstFalhaGetMenus(evt:**FaultEvent):void{
>> Funcoes.mensagem("Falha ao retornar lista de menus autorizados:\n" +
>> evt.message,"E",null);
>>  }
>>  private function montarMenuTree(index:uint):**void{
>>  /*
>> * MONTA O TREE CONFORME ÍNDICE
>> */
>> acChildrens = new ArrayCollection();
>>  acChildrens = ArrayCollection(menus[index].**children);
>> var obj: Object = new Object();
>> obj.label = menus[index].label;
>>  obj.type = "Normal";
>> obj.id = 466;
>> obj.children = acChildrens;
>>  acMenusPai = new ArrayCollection();
>> acMenusPai.addItem(obj);
>> _menuTree.dataProvider = acMenusPai;
>>  callLater(expandFirstNode);
>> _menuTree.width = 240;//reseta o tamanho do menu tree
>>  /*
>> * FUNÇÃO RECURSIVA PARA SETAR OS ÍCONES NO TREE: VER COMO CONVERTER
>> BYTEARRAY PARA BITMAPDATA EM TEMPO DE EXECUÇÃO
>>  */
>> setarIconesRecursivo(**ArrayCollection(_menuTree.**dataProvider));
>>  }
>>  private function setarIconesRecursivo(**dataProvider:ArrayCollection):**
>> void{
>>  for(var i:uint=0; i<dataProvider.length;i++){
>> if(dataProvider[i].icone != null){
>> loaderCustomizado = new LoaderCustomizado();
>>  //passo o parâmetro para o loader
>> loaderCustomizado.paramCustom = dataProvider[i];
>> loaderCustomizado.**contentLoaderInfo.**addEventListener(Event.**COMPLETE,
>> getBitmapData);
>>  loaderCustomizado.loadBytes(**dataProvider[i].icone);
>> }
>> if(dataProvider[i].children != null){
>>  setarIconesRecursivo(**ArrayCollection(dataProvider[**i].children));
>> //return;
>> }
>>  }
>> }
>>  private function getBitmapData(evt:Event):void{
>>  //recupero a imagem e o parâmetro no evento
>> var conteudo:* = evt.target.content;
>> bitmapData = new BitmapData(conteudo.width,**conteudo.height,true,**
>> 0x00000000);
>>  var matrix:Matrix = new Matrix();
>> bitmapData.draw(conteudo, matrix,null,null,null,true);
>> var icone:Class = RuntimeBitmapAsset.getClass(**bitmapData);
>>  _menuTree.setItemIcon(evt.**target.loader.paramCustom, icone, null);
>> }
>>  private function getBitmapDataAbas(evt:Event):**void{
>> //recupero a imagem e o parâmetro no evento
>> var conteudo:* = evt.target.content;
>>  bitmapDataAbas = new BitmapData(conteudo.width,**conteudo.height,true,**
>> 0x00000000);
>> var matrix:Matrix = new Matrix();
>>  bitmapDataAbas.draw(conteudo, matrix,null,null,null,true);
>> var icone:Class = RuntimeBitmapAsset.getClass(**bitmapDataAbas);
>>  evt.target.loader.paramCustom.**icon = icone;
>> }
>>  private function expandFirstNode():void{
>> /*
>> * EXPANDE O PRIMEIRO NÓ (PASTA PAI: NOME DO MÓDULO)
>>  */
>> _menuTree.expandItem(**acMenusPai[0], true, true);
>> }
>>  private function handlerSelectAba(evt:**IndexChangedEvent):void{
>> /*
>>  * REMONTA MENU TREE CONFORME ÍNDICE DA ABA
>> */
>> montarMenuTree(evt.newIndex);
>>  }
>>  private function handlerSelectTree(evt:**ListEvent):void{
>>  /*
>> * VERIFICA SE É PASTA OU JANELA (PAI OU FILHO)
>> */
>>  var item:Object = Tree(evt.currentTarget).**selectedItem;
>> if(_menuTree.dataDescriptor.**isBranch(item)){
>>  /*
>> * EXPANDE PASTA
>> */
>> _menuTree.expandItem(item, !_menuTree.isItemOpen(item), true);
>>  }
>> else{
>> /*
>>  * ABRE JANELA CORRESPONDENTE
>> */
>>  //é link: abre _blank
>>  /* if(evt.itemRenderer.data.**interfaces.substr(0,4) == "http"){
>> var request:URLRequest = new URLRequest();
>>  request.url = evt.itemRenderer.data.**interfaces.toString();
>>  //nota fiscal eletrônica: enviar usuário e senha
>>  if(evt.itemRenderer.data.**interfaces == "http://200.150.159.134:8080/"*
>> *){
>> var params:URLVariables = new URLVariables();
>>  params.login = parentApplication.**nomeLoginPVDA;
>> params.senha = parentApplication.senha;
>> request.method = URLRequestMethod.POST;
>>  request.data = params;
>> }
>>  navigateToURL(request,"_blank"**);
>> return;
>>  } */
>>  var ClassReference:Class = 
>> getDefinitionByName(evt.**itemRenderer.data.interfaces)
>> as Class;
>>  var instance:Object = new ClassReference();
>>  /*
>>  * Verifica quem é o avô (ex: FrmCadUsuarios->**ClasseFrmCadUsuarios->**
>> ClasseMDIBasico)
>> */
>>  var SuperClassName:String = getQualifiedSuperclassName(**instance);
>> ClassReference = getDefinitionByName(**SuperClassName) as Class;
>>  var classeSuperPai:String = getQualifiedSuperclassName(**
>> ClassReference);
>>  /*
>>  * Outros tipos de avôs devem ser tratados com antecedência no switch
>> */
>> switch(classeSuperPai){
>>  case "Interfaces.Global.Basico::**ClasseMDIBasico":
>> //inclui a janela
>> MDIWindow(instance).left = 0;
>>  MDIWindow(instance).top = 0;
>> MDIWindow(instance).resizable = true;
>> _cnvAreaTrabalho.**windowManager.add(MDIWindow(**instance));
>>  break;
>> case "MDIWindow::**ClasseCmpMDIWindow":
>> //inclui a janela
>>  MDIWindow(instance).left = 0;
>> MDIWindow(instance).top = 0;
>> MDIWindow(instance).resizable = true;
>>  _cnvAreaTrabalho.**windowManager.add(MDIWindow(**instance));
>> break;
>> case "mx.containers::TitleWindow":
>>  //inclui o popup
>> //Observação importante: ao incluir spark em módulos é obrigatório passar
>> o parâmetro moduleFactory.
>>  //neste exemplo, existe um s:RadioButton no popup para envio de aviso
>> de vencimento de duplicatas
>> PopUpManager.addPopUp(**TitleWindow(instance), parent, true, null,
>> moduleFactory);
>>  PopUpManager.centerPopUp(**TitleWindow(instance));
>> break;
>> default:
>>  MDIWindow(instance).left = 0;
>> MDIWindow(instance).top = 0;
>> MDIWindow(instance).resizable = true;
>>  _cnvAreaTrabalho.**windowManager.add(MDIWindow(**instance));
>> }
>> }
>>  }
>>
>> Em sábado, 19 de outubro de 2013 21h53min47s UTC-3, Robinho de Morais
>> escreveu:
>>>
>>> Tenho esse tree e queria no Cadastro colocar um icone, no do Processos
>>> outro icone e do Relatório outro icone...
>>>
>>> como eu mudo..
>>>
>>>
>>> <https://lh3.googleusercontent.com/-kIUtUaXKGqQ/UmMpalw1UQI/AAAAAAAAC6A/HJxbcrS20ho/s1600/tree.png>
>>>
>>>
>>>
>>>  --
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev"
> dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
> envie um e-mail para [email protected].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>

-- 
-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
--- 
Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos 
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um 
e-mail para [email protected].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Responder a