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 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ê 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 flexdev+unsubscr...@googlegroups.com. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.