Delphi, C++ Builder & .NET Parte do sgcUI

sgcNavigation, a Barra de Navegação Lateral e em Acordeão para Delphi, C++ Builder & .NET

Dê à sua aplicação um menu de navegação moderno em minutos. Um único controle é uma barra lateral ou um acordeão, se recolhe em uma faixa de ícones com uma animação suave, mostra emblemas com contagens de itens não lidos e funciona totalmente pelo teclado. Os temas claro e escuro já vêm incluídos.

VCL, FireMonkey, WinForms, WPF, AvaloniaDelphi 7 a 13 e C++ Builder 2007 a 13Edição Community gratuita para .NETIncluído no sgcUI Standard
Demo SidebarApp com uma barra lateral de 8 itens nos grupos Workspace e Business, Dashboard selecionado e dois cartões de KPI à direita

Tudo o que o Menu de um Aplicativo Precisa

Dez recursos que transformam uma lista de páginas em uma estrutura de navegação na qual seus usuários se localizam de imediato.

Layout e modos

Um só controle cobre os dois estilos de navegação usados em aplicações corporativas e a faixa estreita entre eles.

Uma barra lateral moderna em um só componente

Layout e modos

Uma barra lateral moderna em um só componente

A maioria das aplicações corporativas precisa da mesma coisa na borda esquerda do formulário principal: uma lista de páginas, agrupadas por área, com a página atual claramente marcada. Coloque um TsgcVCLNavigationBar no formulário, alinhe-o à esquerda e adicione os itens. Os cabeçalhos de grupo dão título às linhas abaixo deles em uma cor suave e nunca são selecionados. A linha selecionada recebe um fundo com tom de destaque e uma barra de destaque de 3 pixels, para que os usuários sempre vejam onde estão. Os estados de passagem do mouse e de clique, as dicas e as linhas desabilitadas são todos desenhados para você, e a barra parece finalizada já na primeira execução.

  • Mode := nbmSidebar é o estilo padrão
  • IsGroup transforma um item em um cabeçalho de grupo
  • ItemHeight e GroupHeight definem a altura das linhas
  • A roda do mouse rola listas longas e ScrollIntoView exibe qualquer item
  • Da direita para a esquerda para árabe e hebraico: ícones e legendas trocam de lugar, e o recuo, os chevrons, as insígnias e o botão de recolher ficam espelhados
Ler o tópico da ajuda
Mude para um acordeão com uma propriedade

Layout e modos

Mude para um acordeão com uma propriedade

Telas de configurações e consoles de administração costumam ter mais seções do que cabem na tela. Defina Mode como nbmAccordion e cada cabeçalho de grupo vira uma seção que abre e fecha os itens abaixo dele, com uma seta à direita e filhos recuados. Por padrão, apenas um grupo fica aberto por vez, o que mantém um menu longo curto. Defina AllowMultiExpand quando os usuários precisarem de várias seções abertas ao mesmo tempo. Os itens, os eventos e o seu código continuam exatamente iguais. Os itens colocados antes do primeiro cabeçalho não pertencem a nenhum grupo e são sempre exibidos, o que combina com uma entrada Início ou Dashboard acima das seções.

  • Mode := nbmAccordion troca a barra inteira
  • Expanded abre ou fecha um grupo por código
  • AllowMultiExpand permite manter vários grupos abertos
  • Indent define o recuo dos itens filhos
Ler o tópico da ajuda

Layout e modos

Recolha em uma faixa de ícones, com animação

Barras laterais largas tomam espaço dos dados que seus usuários vieram ver. Defina Collapsed e a barra passa da largura expandida para uma faixa estreita de ícones em cerca de 150 ms. Na faixa, só os ícones são desenhados, a legenda vira dica, os cabeçalhos de grupo viram linhas separadoras e os emblemas viram pontos, então nada importante se perde. A barra define a própria largura, de modo que o conteúdo ao lado simplesmente a acompanha com alClient. Vincule a propriedade Collapsed a um botão de hambúrguer, a uma configuração do usuário ou à largura do formulário, e a faixa abre e fecha da mesma forma nos modos lateral e acordeão.

  • Collapsed alterna entre as duas larguras
  • ExpandedWidth (220) e CollapsedWidth (56) em pixels lógicos
  • AnimateCollapse liga ou desliga a animação
  • OnCollapsedChange avisa quando a faixa abre ou fecha
Ler o tópico da ajuda

Layout e modos

Conduza suas páginas pela seleção

Uma barra de navegação só é útil quando muda o que o usuário vê. Clique ou toque em um item habilitado e a barra o seleciona, dispara OnItemClick e depois executa o OnClick do item. OnSelectionChange é o ponto único para exibir a página correspondente, por exemplo a aba de um TPageControl com abas ocultas, exatamente como o demo SidebarApp foi construído. SelectedIndex lê e define a página atual por código. Desabilite um item que o usuário ainda não pode acessar, explique o motivo na sua dica, ou oculte-o para os perfis que não devem vê-lo, e a lógica de seleção continua funcionando.

  • SelectedIndex é a página escolhida pelo usuário
  • OnSelectionChange troca a página ou o frame
  • OnItemClick na barra e OnClick por item
  • Enabled, Hint e Visible por item
Ler o tópico da ajuda

Itens que informam

As linhas levam mais que uma legenda: um ícone, uma contagem e um vínculo com a lógica que você já escreveu.

Emblemas para contagens de não lidos

Itens que informam

Emblemas para contagens de não lidos

Os usuários devem perceber que algo precisa de atenção antes de abrir a página. Dê a um item um Badge, como uma contagem de não lidos ou a palavra Novo, e a barra o desenha como uma pílula na cor de destaque à direita da linha, com texto preto ou branco, o que for mais legível. Defina-o por código sempre que o valor mudar e a barra se redesenha sozinha. Na faixa recolhida, o emblema vira um ponto sobre o ícone. Como o emblema é texto simples, a mesma propriedade cobre contagens, rótulos curtos e palavras de status sem nenhum código de desenho personalizado.

  • Badge é um texto curto por item
  • Um Badge vazio não desenha nada
  • A pílula usa o destaque do tema ou o seu AccentColor
  • Combine com Hint para explicar a contagem
Ler o tópico da ajuda
Ícones da sua lista de imagens ou um glifo

Itens que informam

Ícones da sua lista de imagens ou um glifo

Toda linha tem um espaço para ícone. Aponte a barra para a lista de imagens que você já usa e defina ImageIndex por item, e as imagens com máscara ou de 32 bits são convertidas uma vez e mantidas em cache até a lista mudar. Ainda não tem uma lista de imagens? Defina um Glyph, uma letra ou símbolo curto que segue as cores do tema, que é a aparência dos demos. Um item desabilitado pinta a imagem com 40 por cento de opacidade, então o estado fica claro de relance. Misturar os dois é válido: os itens com índice de imagem mostram a imagem e os demais usam o glifo, então você pode adicionar ícones aos poucos.

  • Images e ImageIndex para listas de imagens
  • Glyph para uma letra ou símbolo sem imagens
  • O VCL desenha as imagens no tamanho original
  • Listas de imagens do FireMonkey a partir do Delphi XE8
Ler o tópico da ajuda

Itens que informam Somente Registrada

Vincule os itens às suas TActions

As aplicações baseadas em um TActionList já guardam seus comandos, legendas e regras de habilitação em um só lugar. Vincule um item a qualquer TAction do VCL ou do FireMonkey pela propriedade Action e seus Caption, Enabled, Visible, Hint e ImageIndex acompanham a ação. Um clique executa a ação com a barra como ActionComponent, e OnUpdate roda em ociosidade, então um item fica cinza assim que a ação é desabilitada. No .NET o mesmo trabalho é feito por Command e CommandParameter. Um único TActionList pode controlar o menu, a barra de ferramentas e os atalhos de teclado do formulário.

  • Action vincula um item a qualquer TBasicAction
  • O OnClick de um item é executado no lugar da ação
  • Compilado sob SGC_NAVIGATION_ACTIONS
  • .NET: Command e CommandParameter com ICommand

Community: atribua o OnClick do item ou o OnItemClick da barra no lugar de uma ação.

Ler o tópico da ajuda

Teclado, temas e saída

Os detalhes que fazem a barra parecer nativa e a mantêm coerente com o resto da sua aplicação.

Navegação priorizando o teclado

Teclado, temas e saída

Usuários avançados trocam de página sem o mouse, e as revisões de acessibilidade esperam isso. A barra recebe o foco com Tab e move uma linha em foco pelos itens visíveis e habilitados: Cima e Baixo avançam, Home e End saltam, Enter ou Espaço ativa. No acordeão, Esquerda recolhe um grupo e Direita o expande. O retângulo de foco tracejado só aparece enquanto o teclado está em uso, e o foco fica separado da página selecionada. As mesmas teclas funcionam na barra FireMonkey por meio de CanFocus, então os usuários desktop têm o mesmo comportamento em todas as plataformas.

  • TabStop vem ativado por padrão na barra VCL
  • FocusedIndex do modelo é a linha do teclado
  • SelectedIndex continua sendo a página escolhida
  • As dicas mostram a legenda na faixa recolhida
Ler o tópico da ajuda
Claro, escuro e a sua cor de destaque

Teclado, temas e saída

Claro, escuro e a sua cor de destaque

Um menu que ignora o tema da aplicação parece um acréscimo solto. Theme define as cores de superfície, borda, texto, cabeçalho de grupo, passagem do mouse e destaque a partir dos tokens compartilhados do sgcUICore, de modo que uma barra e um sgcDashboard com o mesmo Theme combinam exatamente. AccentColor substitui o destaque pela cor da sua marca na barra de seleção, no retângulo de foco e nos emblemas. Uma barra hospedada em um bloco do dashboard segue sozinha o tema do dashboard. Troque o tema em tempo de execução e a barra se redesenha na hora, pronta para um botão de modo escuro na sua página de configurações.

  • Theme: utDefault (padrão, segue o tema da aplicação), utLight ou utDark
  • AccentColor como um valor $AARRGGBB, 0 mantém o destaque do tema
  • Os mesmos tokens de todo produto sgcUI
  • Os blocos do dashboard enviam seu tema para a barra
Ler o tópico da ajuda
Renderize a barra sem janela

Teclado, temas e saída

Renderize a barra sem janela

Documentação, testes visuais e back ends web às vezes precisam de uma imagem do menu, não do menu em si. O renderizador em sgcNavigation_Render pinta um TsgcNavigationModel sem janela e sem VCL ou FireMonkey, de modo que um programa de console, um serviço ou um servidor produz a mesma barra em PNG ou SVG. A unit compila em todas as plataformas, inclusive Linux64, e um parâmetro de escala gera imagens nítidas para telas de alto DPI. Passe sua lista de imagens ao renderizador e a imagem exportada mostra os mesmos ícones da aplicação em execução.

  • sgcNavigationSaveToPNG grava um arquivo ou stream PNG
  • sgcNavigationSaveToSVG grava a mesma barra como SVG
  • sgcNavigationRender pinta em qualquer canvas do sgcUICore
  • Largura e altura em pixels lógicos, vezes a escala
Ler o tópico da ajuda

Veja o sgcNavigation em ação

sgcNavigation dentro das demos da suíte sgcUI: aplicações completas que rodam offline com dados simulados integrados.

Quem cria com o sgcNavigation

Uma estrutura moderna para aplicações ERP e de administração

Você tem dezenas de formulários existentes e uma janela principal que ainda os abre por uma barra de menus. Coloque uma barra lateral à esquerda, um item por área, e deixe o OnSelectionChange trocar as abas de um TPageControl com abas ocultas. Os emblemas mostram pedidos pendentes ou mensagens não lidas, e a faixa de ícones devolve espaço aos formulários. Execute o SidebarApp para ver o padrão funcionando com uma página do sgcDashboard.

  • Modo lateral
  • Emblemas
  • Recolher em uma faixa de ícones
Execute o demo SidebarApp

Configurações e consoles de administração

As telas de configuração agrupam dezenas de páginas sob poucos títulos, como Sales, Inventory e Admin. O acordeão mantém uma seção aberta por vez, ou várias com AllowMultiExpand, e os links de Action reaproveitam os comandos e as regras de habilitação do seu TActionList. Os usuários de teclado percorrem as seções com as setas. O demo Accordion mostra três grupos, um botão de expandir e um log de cliques.

  • Modo acordeão
  • Links de Action
  • Navegação pelo teclado
Execute o demo Accordion

A mesma navegação em todas as plataformas

Uma aplicação FireMonkey que roda em Windows, macOS, iOS e Android não deveria precisar de um menu diferente em cada uma. O TsgcFMXNavigationBar tem os mesmos itens, modos e eventos da barra VCL, e as barras .NET para WinForms, WPF e Avalonia seguem os mesmos nomes. As equipes que entregam uma aplicação desktop em Delphi e uma ferramenta .NET mantêm um único modelo mental. SidebarFMX é a versão FireMonkey do demo da barra lateral.

  • Barra FireMonkey
  • Temas
  • Barras .NET
Execute o demo SidebarFMX

A Navigation Bar in a Few Lines

The same API in Delphi, C++ Builder and C#: an accordion bar with groups, a badge, a disabled item and a Collapse button.

procedure TMainForm.CreateNavigation;
var
  oItem: TsgcNavigationItem;
begin
  // an accordion bar on the left, dark theme, several groups open at once
  FNav := TsgcVCLNavigationBar.Create(Self);
  FNav.Parent := Self;
  FNav.Align := alLeft;
  FNav.Mode := nbmAccordion;
  FNav.AllowMultiExpand := True;
  FNav.Theme := utDark;
  // a group header (third parameter True), then the items under it
  FNav.Items.AddItem('Sales', '', True);
  FNav.Items.AddItem('Orders', 'O');
  FNav.Items.AddItem('Invoices', 'I').Badge := '3';
  FNav.Items.AddItem('Admin', '', True);
  oItem := FNav.Items.AddItem('Users', 'U');
  oItem.Hint := 'Manage the users';
  oItem := FNav.Items.AddItem('Billing', 'B');
  oItem.Enabled := False;
  FNav.SelectedIndex := 1;
  FNav.OnItemClick := NavItemClick;
  FNav.OnSelectionChange := NavSelectionChange;
  // a Collapse button folds the bar into an icon rail with an animation
  FNav.AnimateCollapse := True;
  FButton.Caption := 'Collapse';
  FButton.OnClick := ButtonClick;
end;

procedure TMainForm.NavItemClick(Sender: TObject; aItem: TsgcNavigationItem);
begin
  Caption := 'Clicked: ' + aItem.Caption;
end;

procedure TMainForm.NavSelectionChange(Sender: TObject);
begin
  FPanel.Caption := FNav.Items[FNav.SelectedIndex].Caption + ' page';
end;

procedure TMainForm.ButtonClick(Sender: TObject);
begin
  FNav.Collapsed := not FNav.Collapsed;
end;
#include <vcl.h>
#include <Vcl.ExtCtrls.hpp>
#include "sgcUICore_Theme.hpp"
#include "sgcNavigation_Model.hpp"
#include "sgcNavigation_VCL.hpp"

class TNavHandler : public TObject
{
public:
  TsgcVCLNavigationBar *Nav;
  TPanel *Content;
  void __fastcall ItemClick(TObject *Sender, TsgcNavigationItem *aItem);
  void __fastcall SelectionChange(TObject *Sender);
  void __fastcall CollapseClick(TObject *Sender);
};

void __fastcall TNavHandler::ItemClick(TObject *Sender, TsgcNavigationItem *aItem)
{
  Content->Caption = "Clicked: " + aItem->Caption;
}

void __fastcall TNavHandler::SelectionChange(TObject *Sender)
{
  Content->Caption = Nav->Items->Items[Nav->SelectedIndex]->Caption + " page";
}

void __fastcall TNavHandler::CollapseClick(TObject *Sender)
{
  Nav->Collapsed = !Nav->Collapsed;   // animated fold into an icon rail
}

void __fastcall CreateNavigation(TForm *Form, TNavHandler *Handler)
{
  // an accordion bar on the left, dark theme, several groups open at once
  TsgcVCLNavigationBar *Nav = new TsgcVCLNavigationBar(Form);
  Nav->Parent = Form;
  Nav->Align = alLeft;
  Nav->Mode = nbmAccordion;
  Nav->AllowMultiExpand = true;
  Nav->AnimateCollapse = true;
  Nav->Theme = utDark;
  // a group header (third parameter true), then the items under it
  Nav->Items->AddItem("Sales", "", true);
  Nav->Items->AddItem("Orders", "O", false);
  Nav->Items->AddItem("Invoices", "I", false)->Badge = "3";
  Nav->Items->AddItem("Admin", "", true);
  Nav->Items->AddItem("Users", "U", false)->Hint = "Manage the users";
  Nav->Items->AddItem("Billing", "B", false)->Enabled = false;
  Nav->SelectedIndex = 1;
  TPanel *Content = new TPanel(Form);
  Content->Parent = Form;
  Content->Align = alClient;
  Handler->Nav = Nav;
  Handler->Content = Content;
  Nav->OnItemClick = Handler->ItemClick;
  Nav->OnSelectionChange = Handler->SelectionChange;
  TButton *Button = new TButton(Form);
  Button->Parent = Content;
  Button->Caption = "Collapse";
  Button->OnClick = Handler->CollapseClick;
}
using System;
using System.Windows.Forms;
using esegece.sgcUICore;
using esegece.sgcNavigation;

internal class MainForm : Form
{
    private readonly TsgcWinFormsNavigationBar Nav = new TsgcWinFormsNavigationBar();
    private readonly Label lblPage = new Label { Dock = DockStyle.Fill };
    private readonly Button btnCollapse = new Button { Text = "Collapse", Dock = DockStyle.Top };

    public MainForm()
    {
        // an accordion bar on the left, dark theme, several groups open at once
        Nav.Dock = DockStyle.Left;
        Nav.Mode = TsgcNavigationMode.nbmAccordion;
        Nav.AllowMultiExpand = true;
        Nav.AnimateCollapse = true;
        Nav.Theme = TsgcUITheme.utDark;
        // a group header (third parameter true), then the items under it
        Nav.Items.AddItem("Sales", "", true);
        Nav.Items.AddItem("Orders", "O");
        Nav.Items.AddItem("Invoices", "I").Badge = "3";
        Nav.Items.AddItem("Admin", "", true);
        Nav.Items.AddItem("Users", "U").Hint = "Manage the users";
        Nav.Items.AddItem("Billing", "B").Enabled = false;
        Nav.SelectedIndex = 1;
        Nav.OnItemClick = (sender, item) => Text = "Clicked: " + item.Caption;
        Nav.OnSelectionChange = sender => lblPage.Text = Nav.Items[Nav.SelectedIndex].Caption + " page";
        // the Collapse button folds the bar into an icon rail with an animation
        btnCollapse.Click += (s, e) => Nav.Collapsed = !Nav.Collapsed;
        Controls.Add(lblPage);
        Controls.Add(btnCollapse);
        Controls.Add(Nav);
    }
}
dotnet add package esegece.sgcNavigation.WinForms

Execute os demos do sgcNavigation

Os demos SidebarApp e Accordion acompanham o VCL e o C++ Builder, além de uma versão FireMonkey para Delphi, e na edição .NET como projetos WinForms, WPF e Avalonia.

SidebarApp

SidebarApp

Uma barra lateral que controla um page control com abas ocultas, com ícones, um emblema, um item desabilitado, um botão Collapse, uma combo de tema e uma página de KPIs do sgcDashboard. Comprova o padrão de estrutura de aplicação de ponta a ponta.

Accordion

Somente Registrada Accordion

Três grupos, Sales, Inventory e Admin, um botão AllowMultiExpand, links de Action e um log de cliques. Usa links de Action, então exige a edição Registrada ou de Avaliação.

SidebarFMX

O demo da barra lateral construído com o TsgcFMXNavigationBar para FireMonkey, somente para Delphi. Os mesmos itens, modos e eventos da versão VCL, pronto para Windows, macOS e alvos móveis.

Demos compilados

Executáveis prontos para rodar de todos os produtos sgcUI, sem nada para instalar.

Baixar sgcUI_bin.zip →

Onde o sgcNavigation está incluído

O sgcNavigation está em todas as edições do sgcUI, a partir da Standard, e também é vendido separadamente. O sgcNavigation também está incluído no pacote All-Access.

sgcNavigation pacote individual

€149 / desenvolvedor, código-fonte completo, 1 ano de atualizações.

Comprar o sgcNavigation → Ver preços →

sgcUI Standard

sgcNavigation, sgcGrid, sgcToolbar e sgcEditors, a partir de €380.

Ver Standard →

sgcUI Professional

Standard mais sgcCharts, sgcDashboard e sgcGauges, a partir de €529.

Ver Professional →

sgcUI Enterprise

Todos os 14 produtos sgcUI, a partir de €699.

Ver Enterprise →

A edição Community gratuita (esegece.sgcNavigation.Community no NuGet) tem tudo, exceto os links de Action dos itens.

RecursoCommunity (gratuita)Registrada
Modos lateral e acordeão✓✓
Recolhimento em uma faixa de ícones animada✓✓
Ícones, glifos e emblemas✓✓
Navegação pelo teclado✓✓
Temas claro e escuro, cor de destaque✓✓
Saída headless em PNG e SVG✓✓
Links de Action (Delphi) e Command (.NET)−✓

Frameworks e plataformas suportados

Componentes do sgcNavigation

ComponenteAlvo
TsgcVCLNavigationBarDelphi e C++ Builder, VCL (sgcNavigation_VCL)
TsgcFMXNavigationBarDelphi e C++ Builder, FireMonkey (sgcNavigation_FMX)
TsgcNavigationItem, TsgcNavigationItems, TsgcNavigationModelModelo independente de framework (sgcNavigation_Model)
TsgcWinFormsNavigationBar.NET, WinForms
TsgcWpfNavigationBar.NET, WPF
TsgcAvaloniaNavigationBar.NET, Avalonia
AlvoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLNavigationBarWin32 e Win64
Delphi XE6 a 13, FireMonkeyTsgcFMXNavigationBarWindows, macOS, iOS, Android e Linux (FMXLinux)
C++ Builder 2007 a 13TsgcVCLNavigationBar, TsgcFMXNavigationBarHeaders .hpp gerados e bibliotecas estáticas
Delphi 10.2 a 13, independente de frameworkModelo e renderizador headless de PNG e SVGLinux64, por exemplo para renderizar uma barra em um servidor
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsNavigationBar, barras WPF e AvaloniaWinForms, WPF e Avalonia

Perguntas frequentes

Os dois. A propriedade Mode alterna entre nbmSidebar e nbmAccordion no mesmo controle, com os mesmos itens e eventos, então você pode mudar de ideia no fim do projeto ou oferecer os dois estilos como preferência do usuário. Cada modo também se recolhe na faixa de ícones.

Sim. Trate o OnSelectionChange e exiba a página correspondente a SelectedIndex, por exemplo a aba de um TPageControl com abas ocultas, ou crie um frame sob demanda. O demo SidebarApp é construído exatamente assim e hospeda uma página de KPIs do sgcDashboard.

Sim. O TsgcFMXNavigationBar atende Windows, macOS, iOS, Android e Linux (FMXLinux) a partir do Delphi XE6, com os mesmos itens, modos e eventos da barra VCL. As listas de imagens do FireMonkey exigem o Delphi XE8 ou posterior; versões mais antigas usam o Glyph de cada item.

Apenas os links de Action dos itens, que no .NET são as propriedades Command e CommandParameter. Use o OnClick do item ou o OnItemClick da barra no lugar. Todos os outros recursos, incluindo a faixa de ícones, os emblemas, os temas e a saída headless, estão na Community. Veja Edições.

Não. A versão .NET não tem verbos de designer nem editor de coleções, então os itens não são serializados e você os adiciona por código, normalmente no construtor do formulário ou da janela. No Delphi e no C++ Builder a coleção Items é editada em tempo de design com o editor de coleções padrão.

Sim. Todos os tamanhos são pixels lógicos multiplicados pela escala do monitor, então as linhas, os ícones e os emblemas ficam nítidos em qualquer DPI. No WinForms as larguras e alturas escalam com DPI / 96 como no VCL, e no WPF e no Avalonia são unidades independentes de dispositivo.

Sim. sgcNavigationSaveToPNG e sgcNavigationSaveToSVG renderizam uma barra a partir do seu modelo sem janela e sem VCL ou FireMonkey, também no Linux64 a partir do Delphi 10.2. Use para documentação, testes de regressão visual ou uma página web que mostre o menu da sua aplicação.

Ajuda do sgcNavigation

3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Experimente o sgcNavigation Hoje

A avaliação do sgcUI inclui o sgcNavigation e todos os outros produtos sgcUI.