Thiago,

A forma mais fácil de fazer isso é criar uma variável booleana
linkButtonExiste e toda vez que vc for criar o linkbutton vc checa
essa variável, se ela for false vc coloca o linkbutton e seta ela pra
true. Algo do tipo:

                   if(!linkButtonExiste ){
                    if (tempObj instanceof Layout) {
                        lnkBtnLinha.width = 150;
                        lnkBtnLinha.height = 20;
                        lnkBtnLinha.label = INCLUIR_NOVA_LINHA;
                        lnkBtnLinha.addEventListener(MouseEvent.CLICK,
temp.incluir);
                        this.addChild(lnkBtnLinha);
                    } else {
                        lnkBtnAtributo.width = 150;
                        lnkBtnAtributo.height = 20;
                        lnkBtnAtributo.label = INCLUIR_NOVO_ATRIBUTO;

lnkBtnAtributo.addEventListener(MouseEvent.CLICK, temp.incluir);
                        this.addChild(lnkBtnAtributo);
                    }
                linkButtonExiste  = true;
                }

Felipe
http://bobfernandes.wordpress.com

2008/6/10 Thiago <[EMAIL PROTECTED]>:
> Opa Felipe... Fiz de uma forma aqui que deu certo... agora tô com outro
> probleminha...
>
> Nessa minha classe renderer que uso na tree, como falei, eu adiciono um
> botão a frente do label. Aí no caso eu só adiciono um botão se o nó tiver
> filhos. Aí eu fiz da seguinte forma:
>
> override public function set data(value:Object): void {
>             if(value != null) {
>                 super.data = value;
>                 if(TreeListData(super.listData).hasChildren) {
>                     var tempObj: Object = TreeListData(super.listData).item;
>                     var temp: Arvore = this.owner as Arvore;
>
>                     if (tempObj instanceof Layout) {
>                         lnkBtnLinha.width = 150;
>                         lnkBtnLinha.height = 20;
>                         lnkBtnLinha.label = INCLUIR_NOVA_LINHA;
>                         lnkBtnLinha.addEventListener(MouseEvent.CLICK,
> temp.incluir);
>                         this.addChild(lnkBtnLinha);
>                     } else {
>                         lnkBtnAtributo.width = 150;
>                         lnkBtnAtributo.height = 20;
>                         lnkBtnAtributo.label = INCLUIR_NOVO_ATRIBUTO;
>                         lnkBtnAtributo.addEventListener(MouseEvent.CLICK,
> temp.incluir);
>                         this.addChild(lnkBtnAtributo);
>                     }
>                 }
>             }
>          }
>
> Sobrescrevi o método set data e se a condição
> TreeListData(super.listData).hasChildren me retornar true eu adiciono um
> linkButton.
>
> O problema é que no momento que eu vou adicionando novos nós, ele continua
> adicionando botões em cima dos que já existem. Eu queria saber como faço pra
> verificar se já existe o botão no nó.
>
>
>
> 2008/6/10 Felipe Fernandes <[EMAIL PROTECTED]>:
>>
>> Thiago,
>>
>> Dispare um evento customizado no click do seu linkButton e escute-o na
>> layoutArquivoEdicao.
>>
>> Felipe
>> http://bobfernandes.wordpress.com
>>
>>
>> 2008/6/10 Thiago <[EMAIL PROTECTED]>:
>> > Opa galera... queria uma luz aqui...
>> >
>> > Estou com o seguinte problema. Tenho uma tree renderizada e lá na classe
>> > renderer que criei (ArvoreItemRenderer), eu agrego um linkButton ao lado
>> > do
>> > label. Ex:
>> >
>> > public class ArvoreItemRenderer extends TreeItemRenderer {
>> >
>> > [Bindable]
>> > public var layoutArquivoEdicao: LayoutArquivoEdicao;
>> >
>> > private var btn: LinkButton;
>> >
>> > private static const INCLUIR_NOVA_LINHA: String = "Incluir Nova
>> > Linha";
>> > private static const INCLUIR_NOVO_ATRIBUTO: String = "Incluir Novo
>> > Atributo";
>> >
>> > public function ArvoreItemRenderer() {
>> > super();
>> > }
>> >
>> > override protected function updateDisplayList(unscaledWidth:Number,
>> > unscaledHeight:Number):void {
>> > super.updateDisplayList(unscaledWidth, unscaledHeight);
>> >
>> > if (listData != null) {
>> > label.text = listData.label;
>> > if (btn != null) {
>> > btn.x = label.width - 120;
>> > }
>> > }
>> > }
>> >
>> > override public function set data(value:Object):void {
>> > if(value != null) {
>> > super.data = value;
>> > if(TreeListData(super.listData).hasChildren) {
>> > var tempObj: Object = TreeListData(super.listData).item;
>> > btn = new LinkButton();
>> > btn.width = 150;
>> > btn.height = 20;
>> >
>> > if (tempObj instanceof Layout) {
>> > btn.label = INCLUIR_NOVA_LINHA
>> > } else {
>> > btn.label = INCLUIR_NOVO_ATRIBUTO;
>> > }
>> >
>> > this.addChild(btn);
>> > }
>> > }
>> > }
>> > }
>> >
>> > Observem que lá na declaração dos atributos eu tenho o atributo
>> > layoutArquivoEdicao. É ele que possui a tree. Nele contém os métodos que
>> > quero disparar quando for clicado no linkButton.
>> >
>> > Como faço isso? Porque eu tinha pensado em criar esse meu atributo
>> > layoutArquivoEdicao na classe renderer e lá eu setar a instância que tô
>> > trabalhando. Ex:
>> >
>> > private static var arvoreRenderer: ArvoreItemRenderer = new
>> > ArvoreItemRenderer();
>> >
>> > arvoreRenderer.layoutArquivoEdicao = this;
>> >
>> > e ai depois eu adicionaria essa minha classe renderer
>> > (ArvoreItemRenderer) a
>> > minha tree. Ex:
>> >
>> > arvore.itemRenderer = new ClassFactory(arvoreRenderer);
>> >
>> > Mas o flex não aceita a instância. Só aceita a Classe. Ex:
>> >
>> > arvore.itemRenderer = new ClassFactory(ArvoreItemRenderer);
>> >
>> > Como eu consigo chamar um método na classe renderizada?
>> >
>> > --
>> > Att,
>> > Thiago R. Fernandes
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> > __._,_.___
>> > Mensagens neste tópico (1) Responder (através da web) | Adicionar um
>> > novo
>> > tópico
>> > Mensagens | Arquivos | Fotos | Links
>> > Flex-Brasil - A maior lista sobre Adobe Flex do Brasil
>> >
>> > Todos os participantes tem os seguintes benefícios:
>> > + 35% de desconto em livros da O'Reilly ou Peachpit
>> >
>> > Site Oficial Flex : http://www.flex.org
>> > Visite nosso site : http://www.flexbrasil.org
>> > Visite nosso blog : http://www.flexbrasil.org/blog
>> >
>> > -------------
>> > Conheça a AIR-Brasil a comunidade sobre Adobe AIR
>> > Visite o site: http://www.adobeair.com.br
>> >
>> >
>> > Alterar configurações via web (Requer Yahoo! ID)
>> > Alterar configurações via e-mail: Alterar recebimento para lista diária
>> > de
>> > mensagens | Alterar formato para o tradicional
>> > Visite seu Grupo | Termos de uso do Yahoo! Grupos | Sair do grupo
>> > Atividade nos últimos dias
>> >
>> >  32
>> > Novos usuários
>> >
>> > Visite seu Grupo
>> > Yahoo! Mail
>> >
>> > Conecte-se ao mundo
>> >
>> > Proteção anti-spam
>> >
>> > Muito mais espaço
>> >
>> > Yahoo! Barra
>> >
>> > Instale grátis
>> >
>> > Buscar sites na web
>> >
>> > Checar seus e-mails .
>> >
>> > Yahoo! Grupos
>> >
>> > Crie seu próprio grupo
>> >
>> > A melhor forma de comunicação
>> >
>> > .
>> > __,_._,___
>>
>>
>>
>> --
>> Felipe - http://bobfernandes.wordpress.com
>>
>>
>
>
>
> --
> Att,
> Thiago R. Fernandes
> >
>



-- 
Felipe - http://bobfernandes.wordpress.com

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a