Olá galera! Eu sou Renan Fretta, colunista de CF do MX Studio. A muitos anos eu já sou a favor da tecnologia RIA, desde o flash 5, quando tudo começou a ser possível, mas agora estas tecnologias explodiram na web, mas o Flex 2 como é muito recente ta muito difícil de achar conteúdo e pessoas e/ou sites especializados.
Eu vou me formar na faculdade e to pensando em fazer o trabalho final usando flex 2. O meu projeto será sobre GED (gerenciamento eletrônico de documentos). Enta~o la vai algumas das minha dúvidas pra vcs. 1º Como faço pra adicionar e remover os nodes de uma tree no flex 2? Eu vou ter que montar a arquitetura de uma empresa em uma tree exemplo (cadastro será a tree): Passo 1: a tree começa vazia e o cara adiciona um setor da empresa, exemplo: Financeiro. O node financeiro é adicionado. Passo 2: adiciona subsetores, quantos quiser: Financeiro: cobrança, benefício. Passo 3: Ele também pode excluir e renomear os existentes, inclusive excluir todos e deixar a tree vazia novamente. Alguém pode me ajudar a fazer isto? Eu ja criei alguma parte do código, segue abaixo: Meu menu principal (Default application) Main.mxml: ____________________________________________ <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" paddingTop="0" paddingLeft="0" paddingRight="0" paddingBottom="0"> <mx:Script> <![CDATA[ import com.arqmax.views.Hierarquia; // Imports import mx.events.MenuEvent; import mx.containers.TitleWindow; import mx.managers.PopUpManager; // Atributos [Bindable] private var XmlMenuBar:XMLList = <> <menuitem label="Cadastrar"> <menuitem label="Hierarquia" data="hierarquia"/> </menuitem> </>; // Métodos private function ClicarMenuBar(event:MenuEvent):void { if ([EMAIL PROTECTED]"hierarquia") { showCadastrarHierarquia(); } } // Chamar componentes private function showCadastrarHierarquia():void { TitleWindow(PopUpManager.createPopUp(this, com.arqmax.views.Hierarquia, false)); } ]]> </mx:Script> <mx:MenuBar width="100%" labelField="@label" itemClick="ClicarMenuBar(event);" dataProvider="{XmlMenuBar}"/> </mx:Application> ____________________________________________ Minha view a tela de cadastro de setores: Hierarquia.mxml ____________________________________________ <?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="Iniciar()" title="Hierarquia" showCloseButton="true" close="Fechar()"> <mx:Script> <![CDATA[ import mx.managers.PopUpManager; import mx.controls.Alert; import mx.collections.XMLListCollection; import mx.controls.treeClasses.ITreeDataDescriptor; private function Iniciar():void { PopUpManager.centerPopUp(this); Tree_Hierarquia.dataProvider = XMLList_Hierarquia; } private function Fechar():void { PopUpManager.removePopUp(this); } private function addHierarquia():Boolean { if (TextInput_Codigo.text == "") { TextInput_Codigo.errorString = "Digite o código"; TextInput_Codigo.setFocus(); return false; } if (TextInput_Descricao.text == "") { TextInput_Descricao.errorString = "Digite a descrição"; TextInput_Descricao.setFocus(); return false; } /*if (Tree_Hierarquia.dataProvider) { var temp: XML = new XML(); temp = <node label={TextInput_Descricao.text} codigo={TextInput_Codigo.text}/>; Tree_Hierarquia.dataProvider = temp; return true; }*/ Alert.show(Tree_Hierarquia.showRoot.toString()); if (Tree_Hierarquia.selectedIndex == -1) { Alert.show("Selecione um item"); return false; } Tree_Hierarquia.selectedItem.item = <node label={TextInput_Descricao.text} codigo={TextInput_Codigo.text}/>; return true; } private function removeHierarquia():Boolean { if (Tree_Hierarquia.selectedIndex == -1) { Alert.show("Selecione um item para remover"); return false; } if (Tree_Hierarquia.selectedIndex == 0) { Tree_Hierarquia.dataProvider = null; return false; } var nodeToDelete:XML = XML(Tree_Hierarquia.selectedItem); var xlcParent:XMLListCollection = new XMLListCollection(nodeToDelete.parent().children()); var iIndex:int = xlcParent.getItemIndex(nodeToDelete); xlcParent.removeItemAt(iIndex); return true; } /* public function cadastrarRecipiente():void { //Alert.show(arvore.selectedItem.numero); //Alert.show(arvore.selectedIndex.toString()); //arvore.removeChildAt(Number(arvore.selectedIndex.toString())); } public function cadastrarDocumento():void { //arvore.addChildAt(teste, 5); } /* [Embed(source="../icones/1.gif")] [Bindable] public var icon1:Class; [Embed(source="../icones/2.gif")] [Bindable] public var icon2:Class; */ ]]> </mx:Script> <mx:XMLList id="XMLList_Hierarquia"> <node label="Empresa" codigo="1"> <node label="Financeiro" codigo="2"> <node label="Cobrança" codigo="3"/> <node label="Benefício" codigo="4"/> </node> <node label="Recursos Humanos" codigo="5"/> </node> </mx:XMLList> <mx:Tree id="Tree_Hierarquia" width="500" height="350" dataProvider="{XMLList_Hierarquia}" labelField="@label" showRoot="false"/> <mx:HBox width="100%" horizontalAlign="center"> <mx:Label text="Código:"/> <mx:TextInput id="TextInput_Codigo" text=""/> <mx:Label text="Descrição:"/> <mx:TextInput id="TextInput_Descricao" text=""/> <mx:Button label="Adicionar" click="addHierarquia()"/> <mx:Button label="Remover" click="removeHierarquia()"/> </mx:HBox> </mx:TitleWindow> ____________________________________________ Mas o meu código tem umas falhas na exclusão do node, ele da pane no componente alguém sabe pq? Mais uma dúvida, como o software vai ser pra GED (gerenciamento eletrônico de documentos) os documentos da empresa serão escaneados e salvos em TIFF alguém sabe se da pra visualizar TIFF em algum componente do flash? sei q o jpg aceita mas este formato nao é recomendado pra GED. eu tbm preciso trocar os icones da arvore, exemplo: <mx:XMLList id="XMLList_Hierarquia"> <node label="Empresa" codigo="1" icon="empresa.ico"> <node label="Financeiro" codigo="2" icon="setor.ico"> <node label="Cobrança" codigo="3" icon="subsetor.ico"/> <node label="Benefício" codigo="4" icon="setor.ico"> <node label="Cobrança" codigo="3" icon="subsetor.ico"/> </node> <node label="Recursos Humanos" codigo="5" icon="setor.ico"> <node label="Cobrança" codigo="3" icon="setor.ico"/> </node> </mx:XMLList> Alguma coisa deste tipo, alguem sabe fazer isto? Espero respostas, valeu galera!!! Abraços, Renan

