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


Reply via email to