<?xml version="1.0"?> <!-- dpcontrols/TreeIconField.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script> <![CDATA[ [Bindable] [Embed(source="assets/radioIcon.jpg")] public var iconSymbol1:Class; [Bindable] [Embed(source="assets/topIcon.jpg")] public var iconSymbol2:Class; ]]> </mx:Script> <mx:Tree iconField="@icon" labelField="@label" showRoot="false" width="160"> <mx:XMLList> <node label="New"> <node label="HTML Document" icon="iconSymbol2"/> <node label="Text Document" icon="iconSymbol2"/> </node> <node label="Close" icon="iconSymbol1"/> </mx:XMLList> </mx:Tree> </mx:Application> ou utilize CSS Tree.myTree { default-leaf-icon: Embed("br/com/brbsoftware/common/assets/botones/hoja.png"); folder-closed-icon: Embed("br/com/brbsoftware/common/assets/botones/folder_close_blue.png"); folder-open-icon: Embed("br/com/brbsoftware/common/assets/botones/folder_open_blue.png"); disclosure-closed-icon: Embed("br/com/brbsoftware/common/assets/botones/open_folder.png"); disclosure-open-icon: Embed("br/com/brbsoftware/common/assets/botones/close_folder.png"); color: #333333; text-roll-over-color: #333333; text-selected-color: #333333; roll-over-color: #e4e4e4; selection-color: #cdcdcd; } e no seu MXML coloque <mx:Tree id="treeQualquer" styleName="myTree" ….blablabla /> brunobg ********************************************* www.brbsoftware.com.br bruno...@ig.com.br (MSN & Skype) blogflex.brunobg.com @brunogrohs (21) 9913-2397 Em 24/10/2013, às 16:46, Leonardo Oliveira <leonardoc.olive...@gmail.com> 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.. > > > > > > > > -- > -- > 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. -- -- 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.