Normalmente não faço isso, mas dá uma estudada aí: private function inicializar(evt:FlexEvent):void{ /* * Registros de classes */ registerClassAlias("Interfaces.Ajuda.FrmAjuda",FrmAjuda); registerClassAlias("Interfaces.Faturamento.TabelasDePreco.RegraDescontoEscalonada.FrmRegraDescEsc",FrmRegraDescEsc); registerClassAlias("Interfaces.Parametrizacao.Genericas.FrmCadGener",FrmCadGener); registerClassAlias("Interfaces.Parametrizacao.Menus.FrmCadMenusSFA",FrmCadMenusSFA); registerClassAlias("Interfaces.Parametrizacao.ParamEmailSmtp.FrmParamEmailSmtp",FrmParamEmailSmtp); registerClassAlias("Interfaces.Faturamento.TabelasDePreco.ParametrizacaoRotaTabela.FrmParamRotaTabela",FrmParamRotaTabela); _menuTree.addEventListener(ListEvent.ITEM_CLICK, handlerSelectTree); IntMenusSFA.getMenusSFA(parentApplication.idModulo, 0 ,rstSucGetMenus ,function(evt:FaultEvent):void{ Funcoes.faultEvent("Falha ao requisitar menus sistema.", evt); } ); } private function rstSucGetMenus(evt:ResultEvent):void{ if (evt.result != null){ /* * RECEBE OS MENUS */ menus = new ArrayCollection(); menus = ArrayCollection(evt.result); /* * MONTA MENU TREE */ for(var j:uint=0; j<evt.result.length;j++){ if(evt.result[j].children != null){ montarMenuTree(j); return; } } } } 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 = 263;//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 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, POPUP OU LINK CORRESPONDENTE */ if(evt.itemRenderer.data.popup == "link"){ var request:URLRequest = new URLRequest(); request.url = evt.itemRenderer.data.interfaces.toString(); navigateToURL(request,evt.itemRenderer.data.target.toString()); return; } if(evt.itemRenderer.data.interfaces == "" || evt.itemRenderer.data.interfaces == null){ Funcoes.mensagem("Interface não registrada ou não contida no renderer. Aguarde atualizações.", "I", null); return; } var ClassReference:Class = getDefinitionByName(evt.itemRenderer.data.interfaces) as Class; if(evt.itemRenderer.data.popup == "popup"){ var painel:UIComponent = new ClassReference(); PopUpManager.addPopUp(painel, parent, true); PopUpManager.centerPopUp(painel); } else{ var janela:Object = new ClassReference(); MDIWindow(janela).left = 0; MDIWindow(janela).top = 0; MDIWindow(janela).resizable = true; _cnvAreaTrabalho.windowManager.add(MDIWindow(janela)); } } } private function expandFirstNode():void{ /* * EXPANDE O PRIMEIRO NÓ (PASTA PAI: NOME DO MÓDULO) */ _menuTree.expandItem(_menuTree.dataProvider[0], true, true); }
Em domingo, 16 de março de 2014 22h43min57s UTC-3, Robinho de Morais escreveu: > > Pessoal me dá uma ajuda para eu popular um tree de acordo com os acessos > do usuário logado... > > eu populei um tree manualmente assim : > > var obj1:Object = {name:'Administração',children:[{name:'Cadastro de > Usuários', data:'telas.adm.cadUsuarios', icon:icCad}, > {name:'Cadastro de Empresas', data:'telas.inn.cadEmpresas', icon:icCad} ]}; > var obj2:Object = {name:'Sistema', children:[{name:'Cadastro de Telas'}]}; > var tree:ArrayCollection = new ArrayCollection([obj1, obj2]); > > > treeMenu.dataprovider = tree; > > dessa maneira o meu tree ficou assim : > > > <https://lh4.googleusercontent.com/-Am-JFChYd8k/UyZSpX_ISfI/AAAAAAAAE90/5nS4wp3bkPg/s1600/Sem+t%C3%ADtulo.png> > > > Show de bola....agora criei os acessos dos usuários....e retornou ele em > um result.... > > > mas não estou conseguindo criar o objeto do menu Administração e adicionar > os filhos Cadastro de Usuários e empresas...aparece só [Object],[Object] > > Criei até um view para retornar os dados do banco somente com o campo name > e data...mas não sei como incluir o filho... > > > Um help por favor..... > > -- -- 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/d/optout.