FireMonkey, .NET & Delphi 7 a 13 Parte do sgcUI

sgcNavigation, a mesma barra de navegação para FireMonkey, .NET e Delphi 7 a 13

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, e o formulário com abas coloca as abas dos documentos em uma barra de título com tema, como um navegador da web. Um único modelo e um único renderizador sem janela movem a barra no FireMonkey, WinForms, WPF, Avalonia, na VCL do Delphi 7 a 13 e no C++ Builder, de modo que todos os front ends do seu produto navegam da mesma forma.

FireMonkey, WinForms, WPF, Avalonia, VCLDelphi 7 a 13C++ 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

Vinte recursos que transformam uma lista de páginas em um shell de navegação no qual seus usuários se orientam 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

Shell de navegação

Uma árvore de vários níveis com pesquisa, abas de documentos, uma trilha de navegação e uma paleta de comandos, tudo sobre o mesmo modelo neutro de framework da barra.

Demo NavigationShellFMX com uma árvore pesquisável de Mail, Contacts, Calendar e Settings à esquerda, quatro abas com Work ativa e uma trilha de navegação Mail, Folders, Work acima da página

Shell de navegação

Uma árvore de vários níveis com pesquisa

Aplicações grandes superam uma lista plana de páginas. Defina Mode como nbmTree e a barra vira uma árvore com quantos níveis você precisar: os itens continuam sendo uma coleção plana e o Depth de um item define o seu nível, então o código que preenche a barra quase não muda. Cada nível é recuado e cada pai pode ser recolhido. Ative ShowSearch e uma linha de pesquisa acima dos itens filtra a árvore enquanto o usuário digita, mantém abertos os pais de cada resultado e destaca os caracteres correspondentes. A correspondência aproximada encontra 'Settings' a partir de 'stg'. O modo árvore e a pesquisa fazem parte de todas as edições.

  • Mode := nbmTree e Depth por item
  • ExpandAll, CollapseAll e Expand(aIndex, aRecursive)
  • Filter com FilterMode nfmContains ou nfmFuzzy
  • ShowSearch desenha a linha de pesquisa, Esc a limpa
  • Direita e Esquerda expandem e recolhem, * expande um ramo inteiro
Ler o tópico da ajuda

Shell de navegação

Abas para os documentos abertos

Aplicações no estilo documento mostram as páginas abertas como abas. TsgcFMXNavigationTabs, TsgcVCLNavigationTabs e as faixas do WinForms, WPF e Avalonia desenham abas com ícone, título, botão de fechar e um ponto de modificado, além de um botão de nova aba e uma lista de todas as abas. Quando as abas não cabem, TabSizing as reduz ou aparecem botões de rolagem. O Control de uma aba é a página que a faixa mostra enquanto a aba está ativa. Na edição Registrada o usuário também arrasta as abas para outro lugar, fixa as que devem permanecer e arrasta uma aba para fora da faixa para abri-la em uma janela própria, e SaveLayout guarda a disposição para a próxima execução.

  • Tabs.AddTab, ActiveIndex e Control por aba
  • TabSizing, CloseButtons, ShowNewButton, ShowListButton
  • Ctrl+Tab, clique do meio para fechar, OnTabClose pode recusar
  • Somente Registrada reordenação por arrastar, abas Pinned, OnTabTearOff, SaveLayout e LoadLayout
Ler o tópico da ajuda Reordenação, abas fixadas e desacoplamento

Shell de navegação

Uma trilha de navegação que acompanha a árvore

Árvores profundas precisam de um jeito de ver onde você está e de voltar para cima. A trilha de navegação mostra o caminho como uma linha de segmentos, por exemplo Mail, Folders, Work. Um clique em um segmento volta a ele, e o chevron depois de um segmento lista seus filhos para ir a outro lugar. Vincule-a a uma barra de navegação e ela acompanha o item selecionado, ou preencha-a por conta própria a partir de um Path ou dos Segments. Quando o caminho é longo demais, os primeiros segmentos se dobram em um botão de estouro. Na edição Registrada, um clique na área vazia, F4 ou Ctrl+L transforma a trilha de navegação em um campo de edição com o caminho completo, como a barra de endereços de um gerenciador de arquivos.

  • NavigationBar vincula a trilha de navegação a uma barra
  • Path, PathDelimiter e OnGetChildren por conta própria
  • OnSegmentClick e AutoTruncate
  • Somente Registrada modo de edição com OnPathEdit
Ler o tópico da ajuda

Shell de navegação Somente Registrada

Uma paleta de comandos para cada comando

Usuários avançados preferem digitar a procurar nos menus. Pressione Ctrl+Shift+P e a paleta de comandos abre no topo da janela: digite algumas letras e ela ordena cada comando por correspondência aproximada, de modo que 'tgsb' encontra 'Toggle sidebar', com os caracteres correspondentes destacados, a categoria ou o caminho em uma cor suave e o atalho à direita. Com a consulta vazia, os comandos usados recentemente vêm primeiro. A paleta lista os seus próprios comandos e todas as fontes de comandos que você adicionar: os itens de uma barra de navegação, os botões de uma faixa de opções ou de uma barra de ferramentas (Delphi), as ações de uma lista de ações ou uma fonte própria.

  • Commands.AddCommand com categoria, palavras-chave e texto do atalho
  • Sources.AddSource para uma barra, uma faixa de opções, uma barra de ferramentas ou uma lista de ações
  • SaveRecent e LoadRecent guardam a lista de recentes
  • ICommand nos comandos em .NET

Edição Registrada no FireMonkey, VCL, WinForms, WPF e Avalonia. A interface IsgcUICommandSource faz parte de todas as edições.

Ler o tópico da ajuda Fontes de comandos

Shell de navegação

Um formulário com abas, com as abas na barra de título

Navegadores, terminais e editores modernos colocam as abas na barra de título da janela, de modo que os documentos ganham toda a altura da tela. O formulário com abas faz o mesmo na sua aplicação. Solte-o em um formulário e vincule-o à faixa de abas: o sgcUI remove a barra de título nativa e desenha uma barra de título com tema, com o ícone da janela, as abas, o botão de nova aba e os botões de minimizar, maximizar e fechar, no tema sgcUI da aplicação, Classic ou Fluent, claro ou escuro. A janela mantém a sombra, as bordas de redimensionamento e o comportamento de maximizada, e o Windows 11 mostra os snap layouts quando o ponteiro repousa sobre o botão de maximizar. O espaço vazio à direita da última aba arrasta a janela. Na edição Registrada, o usuário arrasta uma aba para fora da faixa, para uma nova janela, e a solta na barra de título de outra janela, como em um navegador da web.

  • TsgcVCLNavigationTabbedForm e TsgcFMXNavigationTabbedForm no Delphi e no C++ Builder, TsgcWinFormsNavigationTabbedForm, TsgcWpfNavigationTabbedWindow e TsgcAvaloniaNavigationTabbedWindow no .NET
  • Tabs vincula a faixa de abas. No Delphi, Notebook move a faixa de um notebook para a barra de título, enquanto as páginas ficam no notebook
  • Um clique duplo na faixa vazia maximiza a janela e um clique com o botão direito mostra o menu do sistema
  • No WPF e no Avalonia, a propriedade anexada Tabs na janela a configura a partir do XAML
  • Somente Registrada desacoplamento: TearOffMode move uma aba desacoplada para a janela sob o ponteiro, e ttmNewForm a abre em uma nova janela, a partir de OnCreateTearOffForm, que segue o ponteiro

O formulário com abas está em todas as edições, inclusive na Community. O desacoplamento está na edição Registrada, como o desacoplamento das abas. A moldura com tema exige o Windows com composição de desktop e, no FireMonkey, é aplicada somente no Windows: no macOS, Linux, iOS e Android a barra de título nativa permanece.

Ler o tópico da ajuda Moldura da janela Formulário com abas no .NET

Gerenciador de docking

Um espaço de trabalho no estilo de uma IDE: painéis de ferramentas ancorados em todos os lados, ocultados automaticamente ou flutuantes, uma área de documentos em abas no centro e uma disposição salva como JSON.

Dock site com Explorer e Search em abas à esquerda, uma faixa Toolbox ocultada automaticamente, quatro abas de documentos, Properties à direita e Output na parte inferior, com as guias de soltar e o retângulo de pré-visualização na metade direita dos documentos enquanto Output é arrastado

Gerenciador de docking Somente Registrada

Arraste os painéis para as guias de soltar

Aplicações com muitas janelas de ferramentas precisam de um espaço de trabalho que o usuário possa organizar. TsgcVCLDockManager, TsgcFMXDockManager, TsgcWinFormsDockManager, TsgcWpfDockManager e TsgcAvaloniaDockManager ancoram painéis de ferramentas nos quatro lados do formulário, em divisões aninhadas com divisores e em grupos de abas. O usuário arrasta uma legenda ou uma aba, e as guias de soltar mostram onde ela pode ficar: uma bússola sobre o grupo sob o ponteiro divide esse grupo por um lado ou coloca o painel em abas dentro dele, as guias de borda o ancoram em uma borda do site inteiro, e um retângulo de pré-visualização na cor de destaque mostra o espaço que ele ocupará. Esc cancela o arrasto. A página Docking no Avalonia mostra o TsgcAvaloniaDockManager em XAML e C#.

  • Panels.Add com Name, Caption, Placement e DockSize, e o seu próprio controle como Control
  • DockPanel, ClosePanel, ShowPanel e ActivatePanel no código
  • OnPanelDock pode recusar um dock, um flutuar ou uma mudança de ocultação automática
  • Botões de fechar, fixar, maximizar e de menu em cada legenda
Ler o tópico da ajuda Arrastar e soltar

Gerenciador de docking Somente Registrada

Oculte painéis automaticamente nas faixas laterais

Painéis de ferramentas necessários só de vez em quando não deveriam ocupar espaço o tempo todo. O botão de fixar de uma legenda oculta automaticamente o seu grupo: os painéis viram abas em uma faixa fina na lateral do formulário, e passar o mouse ou clicar em uma aba desliza o painel sobre o conteúdo. Ele volta a deslizar quando o usuário trabalha em outro lugar, e o botão de fixar do painel deslizante ancora o grupo de novo, no lado e no tamanho que tinha. No iOS e no Android um toque abre o painel deslizante.

  • Model.SetAutoHide(aPanel, True) no código
  • AutoHideDelay define o atraso do mouse, 400 ms por padrão
  • CanAutoHide por painel, os documentos nunca são ocultados automaticamente
  • Alt+F7 e a paleta de comandos abrem o painel deslizante de um painel ocultado automaticamente
Ler o tópico da ajuda

Gerenciador de docking Somente Registrada

Janelas flutuantes na área de trabalho

Um painel solto longe das guias flutua em uma janela própria, que o usuário move para outro lugar ou outro monitor. Uma janela flutuante contém uma disposição como o dock site, então mais painéis podem ser ancorados nela lado a lado ou em abas, e um clique duplo na sua legenda a ancora de novo. As janelas flutuantes são janelas de ferramentas sem borda, pertencentes ao formulário e fora da barra de tarefas, com uma legenda desenhada e uma borda que as redimensiona, e cada uma usa a escala do seu próprio monitor. Funcionam nas aplicações desktop VCL, WinForms, WPF, Avalonia e no FireMonkey no Windows e no macOS. No iOS e no Android os painéis não flutuam, e um arrasto mostra apenas as guias.

  • FloatPanel(aPanel, aLeft, aTop) no código
  • AllowFloating no gerenciador de docking e CanFloat por painel
  • Placement := dplFloat inicia um painel flutuando com FloatWidth por FloatHeight
  • Uma janela flutuante fora da área de trabalho visível volta para dentro dela quando uma disposição é carregada
Ler o tópico da ajuda

Gerenciador de docking Somente Registrada

Uma área de documentos em abas no centro

O centro do dock site abriga os documentos: um ou mais grupos de documentos, cada um com uma faixa de abas no topo. A faixa funciona como as abas de navegação, com reordenação por arrastar, documentos fixados primeiro, botões de fechar, um ponto de modificado, clique do meio para fechar, Ctrl+Tab e a lista de todas as abas. Arraste a aba de um documento para um braço lateral da bússola para dividir a área em dois grupos de documentos, lado a lado ou empilhados, desacople-a para flutuar, ou dê um clique duplo para maximizar o seu grupo. O botão de nova aba dispara OnNewDocument, onde o seu código cria o próximo documento.

  • Kind := dpkDocument, com Pinned e Modified por painel
  • DocumentTabSizing, DocumentCloseButtons, DocumentShowNewButton e DocumentShowListButton
  • Ctrl+F6 percorre os documentos, OnActiveDocumentChange informa o ativo
  • OnPanelClose pode manter um documento aberto
Ler o tópico da ajuda

Gerenciador de docking Somente Registrada

Salve a disposição e restaure-a

Os usuários esperam encontrar os painéis onde os deixaram. SaveLayout grava toda a organização como JSON compacto: as divisões e os seus tamanhos, os grupos e os seus painéis ativos, os grupos ocultados automaticamente de cada lado, as janelas flutuantes com os seus limites, o grupo maximizado e os painéis ocultos. LoadLayout a restaura na próxima inicialização. O texto é o mesmo no Delphi e no .NET, então um único arquivo de disposição serve aos dois. Um painel que a disposição cita mas que o formulário ainda não tem, como um documento que estava aberto, chega ao OnRestorePanel, onde o seu código cria o conteúdo dele ou o descarta.

  • SaveLayout, SaveLayoutToFile e SaveLayoutToStream
  • LoadLayout, LoadLayoutFromFile e LoadLayoutFromStream retornam False com um texto estranho e não alteram nada
  • OnRestorePanel para painéis criados em tempo de execução
  • Um comando "Window" por painel transforma a paleta de comandos em um alternador de janelas

Edição Registrada no FireMonkey, VCL, WinForms, WPF e Avalonia, com suporte ao C++ Builder. Teclado, UI Automation, da direita para a esquerda, temas e alta DPI incluídos.

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

A mesma API em FireMonkey, C#, Delphi VCL e C++ Builder: uma barra em acordeão com grupos, um selo, um item desabilitado e um botão Collapse. As abas FireMonkey e C# acrescentam uma faixa de abas e uma paleta de comandos.

uses
  FMX.Types, FMX.Controls, FMX.Forms, FMX.StdCtrls,
  sgcUICore_Theme, sgcNavigation_Model, sgcNavigation_FMX;

procedure TMainForm.CreateNavigation;
begin
  // an accordion bar on the left, dark theme, several groups open at once
  FNav := TsgcFMXNavigationBar.Create(Self);
  FNav.Parent := Self;
  FNav.Align := TAlignLayout.Left;
  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);
  FNav.Items.AddItem('Users', 'U').Hint := 'Manage the users';
  FNav.Items.AddItem('Billing', 'B').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.Text := 'Collapse';
  FButton.OnClick := ButtonClick;
end;

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

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

procedure TMainForm.ButtonClick(Sender: TObject);
begin
  FNav.Collapsed := not FNav.Collapsed;
end;
uses
  FMX.Types, FMX.Controls,
  sgcNavigation_Tabs, sgcNavigation_Tabs_FMX,
  sgcNavigation_Palette, sgcNavigation_Palette_FMX;

procedure TMainForm.CreateShell;
var
  oTab: TsgcNavigationTab;
  oCommand: TsgcCommandPaletteCommand;
begin
  // a tab strip on top: every tab shows its own page
  FTabs := TsgcFMXNavigationTabs.Create(Self);
  FTabs.Parent := FContent;
  FTabs.Align := TAlignLayout.Top;
  oTab := FTabs.Tabs.AddTab('Orders');
  oTab.Control := FOrdersPage;
  FTabs.ActiveIndex := oTab.Index;
  // the command palette (Registered edition), Ctrl+Shift+P opens it
  FPalette := TsgcFMXCommandPalette.Create(Self);
  oCommand := FPalette.Commands.AddCommand('Toggle sidebar', 'View', 'Ctrl+B');
  oCommand.OnExecute := ButtonClick;
  // every item of the bar becomes a "Go to" command
  FPalette.Sources.AddSource(FNav);
end;
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;

Uma janela no estilo de um navegador: TsgcVCLNavigationTabbedForm move a faixa de abas para uma barra de título com tema.

uses
  Classes, Controls, Forms,
  sgcNavigation_Tabs, sgcNavigation_Tabs_VCL, sgcNavigation_TabbedForm_VCL;

procedure TMainForm.CreateTabbedForm;
begin
  // a browser style strip with close buttons and a new tab button
  FTabs := TsgcVCLNavigationTabs.Create(Self);
  FTabs.Parent := Self;
  FTabs.ShowNewButton := True;
  FTabs.CloseButtons := tcbAlways;
  FTabs.Tabs.AddTab('Home');
  FTabs.Tabs.AddTab('Orders');
  FTabs.ActiveIndex := 0;
  // the window frame: the strip moves into the themed title bar
  FTabbedForm := TsgcVCLNavigationTabbedForm.Create(Self);
  FTabbedForm.Tabs := FTabs;
  // Registered edition: a tab dropped on another tabbed window moves there
  FTabbedForm.TearOffMode := ttmEvent;
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);
    }
}
// tabs and a command palette on the same form
private readonly TsgcWinFormsNavigationTabs Tabs = new TsgcWinFormsNavigationTabs();
private readonly TsgcWinFormsCommandPalette Palette = new TsgcWinFormsCommandPalette();

private void CreateShell(Control aOrdersPage)
{
    // a tab strip on top: every tab shows its own page
    Tabs.Dock = DockStyle.Top;
    TsgcNavigationTab oTab = Tabs.Tabs.AddTab("Orders");
    oTab.Control = aOrdersPage;
    Tabs.ActiveIndex = oTab.Index;
    Controls.Add(Tabs);
    // the command palette (Registered edition), Ctrl+Shift+P on this form opens it
    Palette.OwnerForm = this;
    TsgcCommandPaletteCommand oCommand = Palette.Commands.AddCommand("Toggle sidebar", "View", "Ctrl+B");
    oCommand.OnExecute = sender => Nav.Collapsed = !Nav.Collapsed;
    // every item of the bar becomes a "Go to" command
    Palette.Sources.AddSource(Nav);
}
dotnet add package esegece.sgcNavigation.WinForms

Execute os demos do sgcNavigation

Os demos NavigationShell e DockingShell acompanham o produto para FireMonkey, VCL, WinForms, WPF e Avalonia. O demo da barra lateral acompanha o produto para FireMonkey, e os demos SidebarApp e Accordion acompanham a edição .NET como projetos WinForms, WPF e Avalonia e o Delphi VCL e o C++ Builder.

NavigationShellFMX

Somente Registrada NavigationShellFMX

Um shell de navegação completo para FireMonkey, somente para Delphi: uma árvore com linha de pesquisa à esquerda, uma aba para cada página aberta, uma trilha de navegação que acompanha a árvore e uma paleta de comandos (Ctrl+Shift+P) que lista os itens da barra e uma lista de ações. Inclui alternadores de tema escuro e da direita para a esquerda. Usa a paleta, então exige a edição Registrada ou de Avaliação.

Somente Registrada NavigationShell

O mesmo shell para a VCL, com uma pequena faixa de opções no topo cujos comandos também aparecem na paleta de comandos com o caminho 'Tab > Group', ao lado dos itens da árvore e das ações de uma lista de ações. Inclui alternadores de tema escuro e da direita para a esquerda.

Somente Registrada NavigationShell para .NET

O shell de navegação na edição .NET: NavigationShell para WinForms, NavigationShellWpf e NavigationShellAvalonia, cada um com a árvore e a pesquisa, as abas, a trilha de navegação e a paleta de comandos.

DockingShell

Somente Registrada DockingShell e DockingShellFMX

Um shell no estilo de uma IDE construído sobre o gerenciador de docking, para a VCL e para o FireMonkey: uma árvore da barra de navegação como Explorer à esquerda, Properties à direita, Output ocultado automaticamente na parte inferior e documentos de memo com abas fixadas e modificadas no centro. A paleta de comandos lista um comando Window por painel, e há um alternador de tema e um botão Reset layout. A disposição é salva em JSON ao fechar e carregada na próxima inicialização.

Somente Registrada DockingShell para .NET

O shell de docking na edição .NET: DockingShell para WinForms, DockingShellWpf e DockingShellAvalonia, cada um com painéis ancorados, ocultados automaticamente e flutuantes, a área de documentos e a disposição salva.

TabbedForm e TabbedFormFMX

Uma janela no estilo de um navegador com as abas na barra de título, para a VCL e para o FireMonkey, com equivalentes para C++ Builder: um botão de nova aba, botões de fechar e um seletor de tema com claro, escuro, Fluent claro e Fluent escuro. Arraste uma aba para fora da faixa e ela abre em uma nova janela que segue o ponteiro; depois, solte-a na barra de título de outra janela. O desacoplamento exige a edição Registrada. Na edição .NET acompanha como TabbedForm para WinForms, TabbedFormWpf e TabbedFormAvalonia.

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.

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.

Demos compilados

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

Baixar sgcUI_bin.zip →

Guia Primeiros Passos

Cinco demos QuickStart para Delphi (VCL) acompanham o produto em Demos\Navigation\Delphi\00.QuickStart. O guia em PDF as explica passo a passo: uma primeira barra de navegação, um menu criado em código, abas de documentos, temas e estilos, e um pequeno cliente de e-mail.

Baixar o guia (PDF, em inglês) →

sgcNavigation ou os controles VCL do RAD Studio 13.2?

O RAD Studio 13.2 Florence adicionou dois controles VCL, TNavigationView e TTabView. Se a sua aplicação é somente VCL e você compila com a 13.2 ou posterior, eles são uma boa escolha nativa. O sgcNavigation agrega valor quando a mesma navegação precisa rodar em FireMonkey e .NET, quando você compila com versões mais antigas do Delphi e quando precisa de uma trilha de navegação, uma paleta de comandos ou uma árvore pesquisável.

TNavigationView é uma lista vertical de itens com modos normal e compacto, imagens, texto em várias linhas, rolagem e reordenação por arrastar, e vincula seus itens a um controle de várias páginas, um frame ou um TCardPanel. TTabView é uma variante moderna do TTabSet cujas abas hospedam formulários ou outros controles, com imagem, texto em várias linhas e botão de fechar em cada aba, um botão para adicionar uma aba, uma lista suspensa com todas as abas e botões de rolagem. Ambos são bem projetados e seguem o modelo de programação da VCL, então para um novo projeto VCL na 13.2 vale a pena conhecê-los.

O sgcNavigation mantém um único modelo neutro de framework e um único renderizador sem janela por trás de cada host. A barra, e as abas, a trilha de navegação, a árvore de vários níveis e a paleta de comandos que se juntam a ela nesta versão, se comportam da mesma forma em FireMonkey, WinForms, WPF, Avalonia e na VCL do Delphi 7 a 13, de modo que um produto com front end desktop, móvel e .NET navega da mesma maneira em todo lugar.

TópicosgcNavigationTNavigationView e TTabView (VCL, RAD Studio 13.2)
FrameworksFireMonkey, WinForms, WPF, Avalonia e VCLVCL
Versões do Delphi e do C++ BuilderDelphi 7 a 13 (VCL), Delphi XE6 a 13 (FireMonkey), C++ Builder 2007 a 13RAD Studio 13.2 e posteriores
Hosts .NETWinForms, WPF e Avalonia no .NET Framework 4.7.2, .NET 8, 9 e 10Não se aplica, são controles VCL
Renderização sem janela no LinuxSaída PNG e SVG no Linux64 a partir do Delphi 10.2Não descrito na documentação da 13.2
Modelo compartilhado entre frameworksUm modelo neutro de framework, com os mesmos nomes no Delphi e no .NETNão descrito na documentação da 13.2
Trilha de navegaçãoBarra de trilha de navegação que pode acompanhar o nó selecionado da barraNão descrito na documentação da 13.2
Paleta de comandosPaleta de teclado com pesquisa aproximada sobre comandos, itens e açõesNão descrito na documentação da 13.2
Pesquisa na árvoreÁrvore de vários níveis com uma linha de pesquisa que mantém visíveis os pais de cada resultadoNão descrito na documentação da 13.2

Os detalhes de TNavigationView e TTabView vêm das notas do RAD Studio 13 Florence Release 2 da Embarcadero.

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 17 produtos sgcUI, a partir de €699.

Ver Enterprise →

A edição Community gratuita (esegece.sgcNavigation.Community no NuGet) tem a barra com modo árvore e pesquisa, as abas e a trilha de navegação básicas, o formulário com abas com as abas na barra de título e a interface de fontes de comandos. A edição Registrada acrescenta a paleta de comandos, a reordenação de abas, as abas fixadas, o desacoplamento e a disposição de abas salva, o modo de edição da trilha de navegação, o gerenciador de docking e 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✓✓
Modo árvore de vários níveis e pesquisa✓✓
Abas: dimensionamento, botões de fechar, botões de lista e de nova aba, rolagem, teclado✓✓
Formulário com abas: as abas em uma barra de título com tema✓✓
Trilha de navegação: segmentos, chevrons, estouro, vínculo com uma barra✓✓
Fontes de comandos (IsgcUICommandSource)✓✓
Paleta de comandos−✓
Reordenação de abas por arrastar, abas fixadas, desacoplamento, disposição de abas salva−✓
Desacoplamento do formulário com abas em uma nova janela−✓
Modo de edição da trilha de navegação−✓
Gerenciador de docking−✓
Links de Action (Delphi) e Command (.NET)−✓

Frameworks e plataformas suportados

Componentes do sgcNavigation

ComponenteAlvo
TsgcFMXNavigationBarDelphi e C++ Builder, FireMonkey (sgcNavigation_FMX)
TsgcWinFormsNavigationBar.NET, WinForms
TsgcWpfNavigationBar.NET, WPF
TsgcAvaloniaNavigationBar.NET, Avalonia
TsgcVCLNavigationBarDelphi e C++ Builder, VCL (sgcNavigation_VCL)
TsgcFMXNavigationTabs, TsgcFMXNavigationBreadcrumb, TsgcFMXCommandPaletteDelphi e C++ Builder, FireMonkey (sgcNavigation_Tabs_FMX, sgcNavigation_Palette_FMX)
TsgcWinFormsNavigationTabs, TsgcWpfNavigationTabs, TsgcAvaloniaNavigationTabs.NET, WinForms, WPF e Avalonia, com as classes Breadcrumb e CommandPalette correspondentes
TsgcVCLNavigationTabs, TsgcVCLNavigationBreadcrumb, TsgcVCLCommandPaletteDelphi e C++ Builder, VCL (sgcNavigation_Tabs_VCL, sgcNavigation_Palette_VCL)
TsgcVCLNavigationTabbedForm, TsgcFMXNavigationTabbedFormDelphi e C++ Builder, VCL e FireMonkey (sgcNavigation_TabbedForm_VCL, sgcNavigation_TabbedForm_FMX), a barra de título com tema no Windows
TsgcWinFormsNavigationTabbedForm, TsgcWpfNavigationTabbedWindow, TsgcAvaloniaNavigationTabbedWindow.NET, WinForms, WPF e Avalonia
TsgcVCLDockManager, TsgcFMXDockManagerDelphi e C++ Builder, VCL e FireMonkey (sgcNavigation_Dock_VCL, sgcNavigation_Dock_FMX), edição Registrada
TsgcWinFormsDockManager, TsgcWpfDockManager, TsgcAvaloniaDockManager.NET, WinForms, WPF e Avalonia, edição Registrada
TsgcNavigationItem, TsgcNavigationItems, TsgcNavigationModelModelo independente de framework (sgcNavigation_Model)
AlvoComponentePlataformas
Delphi XE6 a 13, FireMonkeyTsgcFMXNavigationBarWindows, macOS, iOS, Android e Linux (FMXLinux)
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsNavigationBar, barras WPF e AvaloniaWinForms, WPF e Avalonia
Delphi 7 a 13, VCLTsgcVCLNavigationBarWin32 e Win64
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

Perguntas frequentes

Se a sua aplicação é somente VCL, TNavigationView e TTabView do RAD Studio 13.2 são uma boa escolha nativa e teremos prazer em recomendá-los. O sgcNavigation é a melhor opção quando a mesma navegação também precisa rodar em FireMonkey no macOS, iOS, Android ou Linux, ou em uma aplicação WinForms, WPF ou Avalonia, quando parte da sua equipe ainda compila com um Delphi ou C++ Builder mais antigo, ou quando você quer uma trilha de navegação, uma paleta de comandos ou uma árvore de vários níveis com pesquisa sobre a barra lateral. O modelo e o renderizador PNG e SVG sem janela são compartilhados por todos os hosts. Veja Escolhendo para uma tabela comparativa.

Sim, na edição Registrada. TsgcFMXCommandPalette, TsgcVCLCommandPalette e as paletas do WinForms, WPF e Avalonia abrem com Ctrl+Shift+P, ordenam os comandos por correspondência aproximada enquanto o usuário digita e mostram primeiro os comandos usados recentemente. Além dos seus próprios comandos, a paleta lista todas as fontes de comandos que você adicionar: os itens de uma barra de navegação, os comandos de uma faixa de opções ou de uma barra de ferramentas no Delphi, as ações de uma lista de ações ou uma fonte própria por meio da interface IsgcUICommandSource. No .NET, um comando pode carregar um ICommand. Veja a paleta de comandos.

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.

A paleta de comandos, a reordenação de abas por arrastar, as abas fixadas e o desacoplamento, o modo de edição da trilha de navegação, o gerenciador de docking e 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 dos links de Action. Todos os outros recursos, incluindo a árvore com pesquisa, as abas, 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.

Não. No iOS e no Android os painéis do TsgcFMXDockManager se ancoram, se dividem, formam abas e se ocultam automaticamente, mas não flutuam: AllowFloating é forçado a False, um toque abre um painel ocultado automaticamente porque não há mouse sobre ele, um toque longo abre o menu do painel e um arrasto mostra apenas as guias de soltar. As janelas flutuantes funcionam nas aplicações desktop VCL, WinForms, WPF, Avalonia e no FireMonkey no Windows e no macOS. Uma disposição salva no desktop ainda carrega em um telefone: os painéis das suas janelas flutuantes mantêm a posição inicial. Veja Janelas flutuantes.

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.