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 -~----------~----~----~----~------~----~------~--~---