Criar um componente para Menu Lateral
Neste artigo mostro-te como podes criar através de um componente um Menu Lateral! Vamos lá?
Neste artigo vou mostrar-te como podes criar através de um componente um Menu Lateral com design e estrutura que podes reutilizar ao longo de uma aplicação ou em qualquer aplicação. Trata-se de um modelo de menu que tem a particularidade de ser interativo e reutilizável!
Não percas aqui o cenário de exemplo que partilho contigo, assim como o processo passo a passo. Se tiveres alguma dúvida, envia-nos a uma mensagem... ficamos à tua espera!
Iniciar a aplicação e o Design do Componente
Começamos por iniciar uma aplicação nova, onde vamos incluir um componente que será o menu lateral para todos os ecrãs da aplicação.
Começamos então por iniciar a aplicação que será uma aplicação de tela.
Damos o nome à aplicação, e pressionamos o botão Criar.
De seguida criamos o componente e damos o nome ao mesmo de “Menu”. Podes aplicar uma cor de fundo à escolha no menu e começa por definir a propriedade da altura do menu. A altura é dinâmica e definida em função da altura de um dos ecrãs da aplicação.
Height: Max(App.Height; App.MinScreenHeight)
Definir a primeira propriedade do componente
A primeira propriedade do menu vai ser a largura do mesmo. Vamos criar uma propriedade de Saída que emite dados do componente a serem utilizados pela aplicação.
De seguida inserimos um ícone que vai definir a variável para a propriedade de saída do componente.
No ícone, colocamos as seguintes propriedades:
- X: 0
- Y: 0
- Width: 70
- Height: 70
- PaddingTop; PaddingLeft; PaddingBottom; PaddingRight: 10
E na propriedade OnSelect definimos uma variável.
Set(varExpandir;!varExpandir)
Esta variável é uma variável Booleana, que significa que, ativa ou desativa ao pressionar o ícone. Esta opção é possível através do caracter “!”.
Agora acedemos ao nosso componente, e à propriedade LarguraMenu que foi criada. Esta propriedade vai receber a nossa variável.
E agora definimos a largura do componente…
Em resumo:
- Definimos uma propriedade de saída para o componente: LarguraMenu que é do tipo numérico.
- O valor da propriedade é definido por uma variável, que é um valor Booleano, mas cujo resultado é um número, de acordo com o tipo de dados da propriedade – 250 ou 80.
- A largura do componente (propriedade Width) recebe o valor que a variável tem definida.
Definir a segunda propriedade do componente
A segunda propriedade do componente será uma tabela com dados. Esta tabela vai conter a informação do menu, e por isso, idealmente é uma tabela com registos. A tabela será a propriedade Itens de uma Galeria, que de uma forma dinâmica vai apresentar os valores do menu. Vamos então definir esta propriedade.
Acedendo à propriedade do componente, podemos ver o código e a função Table, que tem um registo base.
Nesta propriedade aplicamos o seguinte código que define os registos da tabela.
- Um registo com o Nome do menu (NomeMenu) e o respetivo valor.
- Um registo com o ecrã para o menu, que no final do artigo vamos mudar para o ecrã específico, mas para já será o ecrã atual (ActiveScreen)
- Um registo que representa um ícone.
Table( { NomeMenu: "HOME"; EcraMenu: App.ActiveScreen; IconMenu: Icon.Home }; { NomeMenu: "CLIENTES"; EcraMenu: App.ActiveScreen; IconMenu: Icon.People }; { NomeMenu: "PROPOSTAS"; EcraMenu: App.ActiveScreen; IconMenu: Icon.Calculator }; { NomeMenu: "ADMINISTRAÇÃO"; EcraMenu: App.ActiveScreen; IconMenu: Icon.ToolsWrench } )
Vamos então agora inserir a Galeria que vai conter os dados:
Vamos personalizar a galeria com as seguintes propriedades:
- X = 0
- Y = 0
- Width = Parent.Width (que é a largura do componente)
- Height = Parent.Height – 70
- TemplateSize = 80
- Itens = Menu.ItensMenu
A propriedade Itens, vai receber a propriedade personalizada do componente.
Vamos agora colocar alguns controlos na Galeria, começando pelo ícone.
Inserimos um ícone à escolha e definirmos as seguintes propriedades:
- X = 5
- Y = (Parent.TemplateHeight - Self.Height) / 2
- Esta opção permite alinhar o ícone no centro da célula principal da galeria (template)
- Width: 60
- Height: 60
- PaddingTop; PaddingLeft; PaddingBottom; PaddingRight: 0
- Icon = ThisItem.IconMenu
- Esta opção irá obter o valor da tabela, que tem um registo que representa o ícone.
A seguir inserimos um uma Etiqueta de texto e definirmos as seguintes propriedades:
- X = icoMenu.X + icoMenu.Width + 10
- Y = (Parent.TemplateHeight - Self.Height)/2
- Width = Parent.Width - Self.X – 10
- Text = ThisItem.NomeMenu
E inserimos também um Retângulo, para selecionar os itens da galeria, com as seguintes propriedades:
- Fill = Color.Transparent
- Height = Parent.TemplateHeight
- Width = Parent.TemplateWidth
- OnSelect = Navigate(ThisItem.EcraMenu; ScreenTransition.Fade)
Adaptar o menu à aplicação
Agora que temos o design do menu e as propriedades definidas, vamos adaptar o menu à aplicação.
Acedemos aos ecrãs e começamos por adicionar 3 novos ecrãs.
Para cada 1 dos 4 ecrãs damos o nome:
- HOME
- CLIENTES
- PROPOSTAS
- ADMINISTRAÇÃO
Para identificarmos cada ecrã, vamos apenas colocar uma Etiqueta de Texto com o nome de cada ecrã.
Para cada um dos 4 ecrãs adicionamos agora também o controlo personalizado que será o nosso menu lateral.
E renomeamos o controlo para cada um dos ecrãs.
O menu está posicionado, mas ainda não está funcional, pois se bem nos recordamos, os itens da propriedade do menu apontam para o ecrã atual.
Table( { NomeMenu: "HOME"; EcraMenu: App.ActiveScreen; IconMenu: Icon.Home };
Assim nas propriedades do componente, temos que definir agora o ecrã para onde aponta cada um dos menus.
E como podemos verificar, alterações feitas no componente, refletem-se no controlo inserido na aplicação!
Agora que temos o componente, podemos adicionar mais algumas alterações a gosto.
Podemos por exemplo colocar o retângulo por trás de todos os elementos e aplicar uma cor de acordo com o nome do menu selecionado.
If(App.ActiveScreen.Name = ThisItem.NomeMenu; ColorFade(Menu.Fill; 0,8); Color.Transparent)
Podemos também aplicar o link para o ecrã, clicando em qualquer um dos elementos da galeria (icon e texto)
Navigate(ThisItem.EcraMenu; ScreenTransition.Fade)
Outros conteúdos relevantes:
Power BI Desktop: Usar o Filtro de Pormenorização!
Neste novo vídeo, vou mostrar-te uma das ferramentas mais interessantes que o Power BI Desktop fornece: o Filtro de Pormenorização (Drillthrough). Vamos lá?
Como importar dados de uma pasta para o Microsoft Excel (Power Query)?
Neste vídeo tutorial, vou mostrar-vos como podem utilizar um comando muito simples, do Power Query, para importar para uma única tabela dados provenientes de uma pasta!