Não sei se é isto que estás à procura, mas eu já criei uma aplicação em que
ele cria os botões baseado no que existe na base de dados. A única coisa que
tenho de criar é um tipo botão já com o icon colocado. Ou seja tenho (neste
caso) duas opções, mas podes ter infinitas opções, e depois consoante os
botões necessários eles vão sendo criados. No meu caso, relatórios existe
sempre um, e dashboards podems existir 3 4 ou 5 botões consoante o
utilizador que fizer o login.

******************* Código ************************

            //ICON DO DASHBOARD
            [Bindable]
            [Embed("assets/Stats3.gif")]
            private var buttonIcon:Class;

            //ICON DO RELATORIO
            [Bindable]
            [Embed("assets/Document.gif")]
            private var buttonIconRelatorio:Class;

             public function init():void
            {
                //CHAMADA AO SERVIDOR PARA VER OS TIPOS DE DASHBOARD QUE
EXISTEM
                try {
                        farmacias_servico.Dashboard_Search();
                }catch (error:Error){
                        Alert.show("Error: "+error);
                }
            }

            //FUNCAO QUE RECEBE DO SERVIDOR OS TIPOS DE DASHBOARD EXISTENTES
            public function getDataDashboardHandler(event:ResultEvent):void
            {
                arrBotoes = event.result;

                //CALCULA O TAMANHO DO SPACER QUE DISTANCIA O LOGO DOS
BOTÕES
                tamanhoSpacer = 500 - (95*arrBotoes.length);

                //CRIACAO DA ARRAY DE BOTOES DO DASHBOARD PARA PODER
INTEGRAR O ICON
                var ordem:Number = 1;
                botoesOrdenados = new Array();

                while(ordem <=arrBotoes.length)
                {
                    var conta:Number;
                    for (conta = 0; conta < arrBotoes.length; conta++)
                    {
                        if(ordem == arrBotoes[conta].ORDEM)
                        {
                            botoesOrdenados.push(arrBotoes[conta]);
                            ordem++;
                        }
                    }
                }

                var i:Number;
                for (i=0; i<botoesOrdenados.length; i++)
                {
                    var arrBtIcon:Object = new Object();
                    arrBtIcon.label = botoesOrdenados[i].DESCRICAO;
                    arrBtIcon.icon = buttonIcon;
                    arrBotoes2.push(arrBtIcon);
                }

                //CRIACAO DA ARRAY DE BOTOES DO RELATORIO (SÓ UM) PARA PODER
INTEGRAR O ICON
                var objRBtn:Object = new Object();
                objRBtn.label = "Relatórios";
                objRBtn.icon = buttonIconRelatorio;
                var arrBotaoRel:Array = new Array();
                arrBotaoRel.push(objRBtn);

                //ATRIBUIÇÃO DOS DATAPROVIDERS AOS DIFERENTES
TOGGLEBUTTONBAR
                rb1.dataProvider = arrBotaoRel;
                rb1.selectedIndex = 0;
                tb1.dataProvider = arrBotoes2;
            }

            //FUNCAO QUE DEFINE O EVENTO DOS BOTÕES DO DASHBOARD
            public function clickHandler(event:ItemClickEvent):void
            {
                    //ATRIBUICAO DO VALOR DO DASHBOARD CLICADO PARA ESTE SE
TORNAR GERAL E PODER SER UTILIZADO NOUTROS COMPONENTES
                    geralLocator.IDDashboard =
botoesOrdenados[event.index].ID;
                    //AO MUDAR ENTRA 1 E 0 MUDA O FILTRO EXISTENTE
                    alteraCenario(0);
                    //AO MUDAR ENTRE 0 E 1 MUDA ENTRE GRÁFICO E TABELA
                    geralLocator.indexViewstackDash = 0;
                    //BATOTA PARA OBRIGA-LO A CUMPRIR A FUNÇÃO INIT E IR
BUSCAR NOVOS VALORES
                    geralLocator.isTableVisible = false;
                    geralLocator.isDashboardVisible = true;
                    geralLocator.GrafOuTabela = true;
                    //ATRIBUICAO DE NOME PARA O TITULO DO PAINEL
                    geralLocator.nomeDashboard = event.label;
                    geralLocator.isButtonVisible = true;
                    try
                    {
                        Application.application.db_princ.dbgf.init();
                    }
                    catch(error:Error)
                    {
                    }
            }


....

<mx:ToggleButtonBar id="rb1" itemClick="alteraCenario(1)"
        selectedIndex="-1"
        height = "25"
        buttonMode="true"/>

    <!-- CONJUNTOS DE BOTOES DE DASHBOARD-->
    <mx:ToggleButtonBar id="tb1" itemClick="clickHandler(event)"
        selectedIndex="-1"
        height="25"
        horizontalGap="-1" buttonMode="true"/>

*********************************************************

Cumprimentos
Luís Costa

--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade 
Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para 
[email protected]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a