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