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

sgcToolbar, a Barra de Ferramentas e Barra de Status para Delphi, C++ Builder & .NET

Monte a estrutura de uma aplicação desktop com dois controles que têm a mesma aparência em qualquer interface. Uma barra de ferramentas com botões, botões de alternância, grupos de opção e menus suspensos, e uma barra de status de verdade, com painéis de progresso e de indicador que uma thread de trabalho pode atualizar diretamente.

VCL, FireMonkey, WinForms, WPF, AvaloniaAtualizações da barra de status a partir de qualquer threadEdição Community gratuita para .NETIncluído no sgcUI Standard
Barra de ferramentas do EditorShell em 2x com indicações em um botão, um botão de alternância, um separador, um menu suspenso, um rótulo e um espaçador

Uma Barra de Comandos e de Status Completa

Doze recursos para as duas barras de que toda aplicação desktop precisa, de grupos de opção ao progresso ao vivo vindo de uma thread de trabalho.

Comandos

Todo item de que uma barra de comandos precisa, com agrupamento, menus e estouro tratados pelo controle.

Todos os tipos de item de barra de ferramentas em um só controle

Comandos

Todos os tipos de item de barra de ferramentas em um só controle

Uma barra de ferramentas real mistura botões simples, botões que ficam pressionados, botões com menu, separadores e um pouco de texto. No sgcToolbar, cada um deles é um item da mesma coleção, e Kind decide como é desenhado e como reage. Os itens são dispostos da esquerda para a direita com Spacing entre eles, e um espaçador ocupa a largura livre, então você pode empurrar Ajuda ou o nome do usuário para a borda direita sem nenhum código de layout. Width fixa um item quando você precisa de um tamanho estável. Dicas, estados desabilitados e destaque ao passar o mouse são desenhados para todos os tipos.

  • tikButton, tikToggle e tikDropdown para comandos
  • tikSeparator desenha uma linha vertical fina
  • tikSpacer empurra os itens seguintes para a direita
  • tikLabel mostra texto dentro da barra
Ler o tópico da ajuda
Grupos de opção sem código

Comandos

Grupos de opção sem código

Alinhamento de texto, modos de exibição e ferramentas de desenho são clássicos de escolha única entre várias. Dê o mesmo GroupIndex a vários itens de alternância e eles formam um grupo de opção: definir Down em um deles, por clique ou por código, libera os outros, e um clique no item que já está pressionado o mantém pressionado, então uma escolha sempre permanece selecionada. Uma alternância com GroupIndex 0 é uma simples chave de liga e desliga, como Negrito ou Quebra de linha. O clique inverte Down antes de OnItemClick disparar, então o seu tratador lê o novo estado. Nenhuma ligação de evento é necessária para manter o grupo consistente.

  • GroupIndex maior que 0 cria um grupo de opção
  • Down lê ou define o estado por código
  • O estado pressionado é desenhado com um tom de destaque
  • Uma action vinculada controla Down pelo seu Checked
Ler o tópico da ajuda

Comandos

Níveis de zoom, formatos de exportação e arquivos recentes pertencem a um menu sob um botão, não a mais dez botões. Um item tikDropdown desenha uma pequena seta após a legenda e mostra logo abaixo do botão o menu popup que você atribuir a DropdownMenu: um TPopupMenu no VCL e no FireMonkey, um ContextMenuStrip no WinForms. OnItemClick e o OnClick do item disparam antes de o menu abrir, então você pode preencher ou marcar as entradas antes. Se o menu for liberado, a barra limpa a referência para você. Um alvo de clique, um menu, e uma barra de ferramentas que continua curta mesmo quando os comandos crescem.

  • DropdownMenu recebe o popup do seu framework
  • A seta é desenhada após a legenda
  • Preencha ou marque o menu em OnItemClick
  • Funciona também a partir do menu de estouro
Ler o tópico da ajuda

Comandos Somente Registrada

Itens que não cabem vão para um menu de estouro

Os usuários redimensionam janelas, e uma barra de ferramentas que simplesmente corta os últimos botões esconde comandos de que eles precisam. Quando os itens não cabem, o sgcToolbar move os últimos para uma lista de estouro e desenha um botão de seta dupla na extremidade direita. Ao pressioná-lo, aparece OverflowMenu, montado em tempo de execução com uma entrada por item oculto, e escolher uma entrada age exatamente como um clique: uma alternância inverte, OnItemClick dispara e um menu suspenso mostra o seu menu. O modelo informa o que está oculto. Quando a janela cresce de novo, os itens voltam para a barra por conta própria.

  • OverflowMenu é montado para você em tempo de execução
  • HasOverflow, OverflowCount e InOverflow por item
  • ItemAtPos informa um acerto no botão de estouro
  • Compilado sob SGC_TOOLBAR_ADVANCED

Community: os itens que não cabem são cortados, não há botão de estouro.

Ler o tópico da ajuda

Comandos Somente Registrada

Reaproveite suas TActions

Se os seus comandos já vivem em um TActionList, a barra de ferramentas não deveria duplicá-los. Vincule um item a qualquer TAction do VCL ou do FireMonkey pela propriedade Action e ele acompanha Caption, Enabled, Visible, Hint, ImageIndex e Checked da action. Um clique executa a action com a barra como ActionComponent, a menos que o item tenha um tratador OnClick. As barras chamam InitiateAction em ociosidade, então uma action desabilitada desabilita o seu botão sem código extra. No .NET o item tem Command e CommandParameter para ICommand. Um único TActionList pode controlar juntos a barra de ferramentas, o menu principal e a barra de navegação.

  • Action vincula um item a qualquer TBasicAction
  • O Checked da action controla o Down de uma alternância
  • O OnUpdate das actions roda em ociosidade
  • .NET: Command e CommandParameter

Community: trate o OnClick do item ou o OnItemClick da barra no lugar de uma action.

Ler o tópico da ajuda

Barra de status

Uma barra de status que se organiza sozinha, mostra progresso e estado, e aceita atualizações de qualquer thread.

Painéis de status que se organizam sozinhos

Barra de status

Painéis de status que se organizam sozinhos

Linha e coluna, um nome de arquivo, o estado de gravação e uma mensagem principal disputam a borda inferior da janela. O TsgcVCLStatusBar organiza seus Panels da esquerda para a direita em três passagens: os painéis fixos ocupam a sua Width, os painéis AutoSize ocupam a largura do seu texto, e os painéis Spring dividem o que sobrar. Use um painel spring para a mensagem principal e a barra fica organizada em qualquer tamanho de janela. Uma linha fina separa os painéis, e OnPanelClick informa qual deles foi clicado. Os painéis são uma coleção, então você pode adicioná-los e editá-los no Object Inspector em tempo de design.

  • Painéis spkText com Alignment e Hint
  • Painéis Spring dividem a largura livre
  • Painéis AutoSize se ajustam ao texto
  • OnPanelClick informa um clique em um painel
Ler o tópico da ajuda
Barras de progresso e indicadores de estado

Barra de status

Barras de progresso e indicadores de estado

Operações longas precisam de uma barra de progresso, e conexões ativas precisam de uma luz que diga se está tudo bem. Um painel pode ser uma barra de progresso preenchida até o percentual de Progress na cor de destaque, ou um indicador: um ponto colorido seguido do texto do painel. IndicatorState escolhe desligado, ok, aviso ou erro, com verde, âmbar e vermelho ajustados separadamente para o tema claro e o escuro. Combina com o estado de uma conexão de banco de dados, de um feed de dados ou de uma sincronização em segundo plano. Defina Progress ou IndicatorState e o painel se redesenha sozinho, sem código de desenho para escrever.

  • spkProgress com Progress de 0 a 100
  • spkIndicator com IndicatorState
  • sisOff, sisOk, sisWarning, sisError
  • GetIndicatorColor devolve a cor para o tema
Ler o tópico da ajuda

Barra de status

Atualize a barra de status a partir de uma thread de trabalho

Downloads, feeds e cálculos longos rodam em threads de trabalho, e devolver cada atualização de status para a thread principal é trabalhoso e fácil de errar. SetPanelText, SetProgress e SetIndicator podem ser chamados de qualquer thread, sem Synchronize ou Queue. O modelo protege os valores com um lock e dispara OnChange somente quando um valor realmente mudou, então repetir o mesmo valor não custa nada. A barra VCL então envia uma mensagem à sua janela e a barra FireMonkey enfileira o redesenho, de modo que a interface nunca é tocada fora da thread principal. Uma thread que sobrevive a um painel também é segura.

  • SetPanelText, SetProgress, SetIndicator de qualquer thread
  • Nenhum Synchronize ou Queue no seu código
  • Valores inalterados não custam nada
  • Um índice fora do intervalo é ignorado, nunca gera exceção
Ler o tópico da ajuda

Aparência, teclado e saída

Ícones, temas e suporte a teclado que combinam com o resto do sgcUI, além de imagens das barras para a sua documentação.

Ícones ou letras de glifo, legendas opcionais

Aparência, teclado e saída

Ícones ou letras de glifo, legendas opcionais

Todo item clicável tem um espaço de ícone de 16 pixels lógicos. Ele mostra a imagem em ImageIndex da lista Images da barra ou, quando o item não tem imagem, o seu Glyph: uma letra ou símbolo curto que não precisa de lista de imagens alguma. Desative ShowCaptions para uma barra compacta só com ícones, e a legenda vira dica, então nada se perde. As listas de imagens do VCL são convertidas uma vez para ARGB direto, com o alfa recuperado, e mantidas em cache até a lista mudar, então listas com máscara e de 32 bits ficam corretas. Misture os dois à vontade enquanto os ícones ainda estão sendo desenhados.

  • Images e ImageIndex para listas de imagens
  • Glyph quando não há imagem
  • ShowCaptions False para só ícones
  • Listas de imagens do FireMonkey a partir do Delphi XE8
  • Da direita para a esquerda para árabe e hebraico: os itens fluem a partir da direita, e MirrorGlyph inverte ícones direcionais como voltar, avançar, desfazer e refazer
Ler o tópico da ajuda
Claro, escuro e a sua cor de destaque

Aparência, teclado e saída

Claro, escuro e a sua cor de destaque

As barras tiram suas cores dos tokens de tema do sgcUICore, os mesmos que todo produto da suíte usa, então uma barra de ferramentas acima de um sgcGrid e ao lado de uma barra sgcNavigation parece uma única aplicação. Theme seleciona utLight ou utDark, e AccentColor substitui o destaque usado pelo anel de foco, pelo tom de pressionado das alternâncias e pelas barras de progresso. Os estados de passagem do mouse, de clique, pressionado, em foco e desabilitado são todos derivados para você. Cada barra tem o seu próprio Theme, então defina-o na barra de ferramentas e na barra de status. Trocar em tempo de execução redesenha as duas barras de uma vez.

  • Theme: utDefault (padrão, segue o tema da aplicação), utLight ou utDark
  • AccentColor como $AARRGGBB, 0 mantém o destaque do tema
  • As cores dos indicadores seguem o tema
  • Troque em tempo de execução para um botão de modo escuro
Ler o tópico da ajuda

Aparência, teclado e saída

Acesso pelo teclado e uma alça de redimensionamento que funciona

A barra de ferramentas pode entrar na ordem de tabulação quando os seus usuários precisarem: defina TabStop e o botão em foco mostra um anel de foco, Esquerda e Direita movem entre os botões habilitados, Home e End saltam, Enter ou Espaço ativa. Vem desativado por padrão, então a barra nunca rouba o foco do editor abaixo dela. ClickItem ativa um item por código, por exemplo a partir de um atalho do formulário. Na barra de status, SizeGrip desenha os pontos da alça, e no VCL arrastá-los redimensiona um formulário redimensionável. No FireMonkey a alça é desenhada mas não redimensiona o formulário, então desative SizeGrip lá quando o formulário não for redimensionável.

  • TabStop no VCL, CanFocus no FireMonkey
  • ClickItem executa um item por código
  • SizeGrip e GripRect na barra de status
  • A alça redimensiona o formulário somente quando ele é redimensionável
Ler o tópico da ajuda

Aparência, teclado e saída

Renderize as duas barras sem janela

As capturas de tela de uma barra de ferramentas em um manual ficam desatualizadas a cada versão. O renderizador em sgcToolbar_Render pinta um TsgcToolbarModel ou um TsgcStatusBarModel sem janela e sem VCL ou FireMonkey, de modo que um programa de console, um teste ou um servidor web pode produzir as mesmas barras como imagem. SaveToPNG e SaveToSVG recebem um tamanho em pixels lógicos e uma escala, então 560 por 44 na escala 2 gera uma imagem nítida de 1120 por 88. As units compilam em todas as plataformas, inclusive Linux64. Passe as suas próprias imagens por OnGetImage e a imagem combina com a aplicação em execução.

  • SaveToPNG grava um arquivo ou stream PNG
  • SaveToSVG grava a mesma barra como SVG
  • Funciona em TsgcToolbarModel e TsgcStatusBarModel
  • OnGetImage fornece os ícones para a saída headless
Ler o tópico da ajuda

Veja o sgcToolbar em ação

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

Quem cria com o sgcToolbar

Editores de documentos e de código

Um editor precisa de botões de alternância Negrito e Itálico, um grupo de opção de alinhamento, um menu de Zoom e uma barra de status com a linha, a coluna e o estado de gravação. O sgcToolbar cobre tudo isso com uma coleção de itens e uma coleção de painéis, vinculadas ao TActionList que você já tem. Quando a janela estreita, o menu de estouro mantém todos os comandos acessíveis. O demo EditorShell monta exatamente isso em torno de um TMemo.

  • Tipos de item
  • Grupos de opção
  • Menu de estouro
Execute o demo EditorShell

Ferramentas de longa duração e feeds ao vivo

Ferramentas de importação, clientes de sincronização e aplicativos de monitoramento fazem o trabalho em threads de segundo plano e precisam relatá-lo. Chame SetProgress, SetIndicator e SetPanelText direto da thread de trabalho, e a barra de status se redesenha na thread principal sem Synchronize no seu código. O indicador fica verde, âmbar ou vermelho conforme o estado da tarefa. O demo LiveStatus simula um download que faz exatamente isso.

  • Atualizações thread-safe
  • Painéis de progresso
  • Indicadores
Execute o demo LiveStatus

Uma barra de comandos em todas as plataformas

Uma aplicação FireMonkey entregue em Windows, macOS e dispositivos móveis merece a mesma barra de ferramentas em todo lugar. O TsgcFMXToolbar e o TsgcFMXStatusBar têm os mesmos itens, painéis e eventos das barras VCL, e as barras .NET para WinForms, WPF e Avalonia seguem os mesmos nomes. EditorShellFMX é a versão FireMonkey do editor, com os mesmos itens, menu de estouro e painéis de status.

  • Barras FireMonkey
  • Temas
  • Painéis de status
Execute o demo EditorShellFMX

A Toolbar and Status Bar in a Few Lines

The same API in Delphi, C++ Builder and C#: a toggle, a radio group, a dropdown, and a status bar updated from the click handler.

procedure TMainForm.CreateBars;
var
  oItem: TsgcToolbarItem;
  oPanel: TsgcStatusBarPanel;
begin
  // a toolbar with a toggle, a Left/Center radio group and a dropdown
  FToolbar := TsgcVCLToolbar.Create(Self);
  FToolbar.Parent := Self;
  FToolbar.ShowCaptions := True;
  FToolbar.ShowHint := True;
  FToolbar.OnItemClick := ToolbarItemClick;
  oItem := FToolbar.Items.Add;
  oItem.Caption := 'Save';
  oItem.Glyph := 'S';
  oItem.Hint := 'Save the document';
  FToolbar.Items.Add.Kind := tikSeparator;
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.Caption := 'Bold';
  oItem.Glyph := 'B';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.GroupIndex := 1;
  oItem.Down := True;
  oItem.Caption := 'Left';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.GroupIndex := 1;
  oItem.Caption := 'Center';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikDropdown;
  oItem.Caption := 'Zoom';
  oItem.DropdownMenu := FZoomMenu;
  // a status bar: a spring text panel, a progress bar and an indicator
  FStatusBar := TsgcVCLStatusBar.Create(Self);
  FStatusBar.Parent := Self;
  oPanel := FStatusBar.Panels.Add;
  oPanel.Spring := True;
  oPanel.Text := 'Ready';
  FStatusBar.Panels.Add.Kind := spkProgress;
  oPanel := FStatusBar.Panels.Add;
  oPanel.Kind := spkIndicator;
  oPanel.AutoSize := True;
  oPanel.Text := 'Saved';
  oPanel.IndicatorState := sisOk;
end;

procedure TMainForm.ToolbarItemClick(Sender: TObject; aItem: TsgcToolbarItem);
begin
  // the setters are thread safe, a worker thread can call them directly
  FStatusBar.SetPanelText(0, aItem.Caption + ' clicked');
  FStatusBar.SetProgress(1, 60);
  FStatusBar.SetIndicator(2, sisWarning);
end;
#include <vcl.h>
#include <Vcl.Menus.hpp>
#include "sgcUICore_Theme.hpp"
#include "sgcToolbar_Model.hpp"
#include "sgcToolbar_VCL.hpp"

class TBarHandler : public TObject
{
public:
  TsgcVCLStatusBar *StatusBar;
  void __fastcall ItemClick(TObject *Sender, TsgcToolbarItem *aItem);
};

void __fastcall TBarHandler::ItemClick(TObject *Sender, TsgcToolbarItem *aItem)
{
  // the setters are thread safe, a worker thread can call them directly
  StatusBar->SetPanelText(0, aItem->Caption + " clicked");
  StatusBar->SetProgress(1, 60);
  StatusBar->SetIndicator(2, sisWarning);
}

void __fastcall CreateBars(TForm *Form, TBarHandler *Handler, TPopupMenu *ZoomMenu)
{
  // a toolbar with a toggle, a Left/Center radio group and a dropdown
  TsgcVCLToolbar *Toolbar = new TsgcVCLToolbar(Form);
  Toolbar->Parent = Form;
  Toolbar->ShowCaptions = true;
  Toolbar->OnItemClick = Handler->ItemClick;
  TsgcToolbarItem *Item = Toolbar->Items->Add();
  Item->Caption = "Save";
  Item->Glyph = "S";
  Item->Hint = "Save the document";
  Toolbar->Items->Add()->Kind = tikSeparator;
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->Caption = "Bold";
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->GroupIndex = 1;
  Item->Down = true;
  Item->Caption = "Left";
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->GroupIndex = 1;
  Item->Caption = "Center";
  Item = Toolbar->Items->Add();
  Item->Kind = tikDropdown;
  Item->Caption = "Zoom";
  Item->DropdownMenu = ZoomMenu;
  // a status bar: a spring text panel, a progress bar and an indicator
  TsgcVCLStatusBar *StatusBar = new TsgcVCLStatusBar(Form);
  StatusBar->Parent = Form;
  TsgcStatusBarPanel *Panel = StatusBar->Panels->Add();
  Panel->Spring = true;
  Panel->Text = "Ready";
  StatusBar->Panels->Add()->Kind = spkProgress;
  Panel = StatusBar->Panels->Add();
  Panel->Kind = spkIndicator;
  Panel->AutoSize = true;
  Panel->Text = "Saved";
  Panel->IndicatorState = sisOk;
  Handler->StatusBar = StatusBar;
}
using System;
using System.Windows.Forms;
using esegece.sgcToolbar;

internal class MainForm : Form
{
    private readonly TsgcWinFormsToolbar Toolbar = new TsgcWinFormsToolbar();
    private readonly TsgcWinFormsStatusBar StatusBar = new TsgcWinFormsStatusBar();

    public MainForm()
    {
        // a toolbar with a toggle, a Left/Center radio group and a dropdown
        Toolbar.ShowCaptions = true;
        Toolbar.OnItemClick = ToolbarItemClick;
        TsgcToolbarItem oItem = Toolbar.Items.Add();
        oItem.Caption = "Save";
        oItem.Glyph = "S";
        oItem.Hint = "Save the document";
        Toolbar.Items.Add().Kind = TsgcToolbarItemKind.tikSeparator;
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.Caption = "Bold";
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.GroupIndex = 1;
        oItem.Down = true;
        oItem.Caption = "Left";
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.GroupIndex = 1;
        oItem.Caption = "Center";
        ContextMenuStrip oZoom = new ContextMenuStrip();
        oZoom.Items.Add("100%");
        oZoom.Items.Add("200%");
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikDropdown;
        oItem.Caption = "Zoom";
        oItem.DropdownMenu = oZoom;
        // a status bar: a spring text panel, a progress bar and an indicator
        TsgcStatusBarPanel oPanel = StatusBar.Panels.Add();
        oPanel.Spring = true;
        oPanel.Text = "Ready";
        StatusBar.Panels.Add().Kind = TsgcStatusPanelKind.spkProgress;
        oPanel = StatusBar.Panels.Add();
        oPanel.Kind = TsgcStatusPanelKind.spkIndicator;
        oPanel.AutoSize = true;
        oPanel.Text = "Saved";
        oPanel.IndicatorState = TsgcStatusIndicatorState.sisOk;
        Controls.Add(Toolbar);
        Controls.Add(StatusBar);
    }

    private void ToolbarItemClick(object sender, TsgcToolbarItem aItem)
    {
        // the setters are thread safe, a worker thread can call them directly
        StatusBar.SetPanelText(0, aItem.Caption + " clicked");
        StatusBar.SetProgress(1, 60);
        StatusBar.SetIndicator(2, TsgcStatusIndicatorState.sisWarning);
    }
}
dotnet add package esegece.sgcToolbar.WinForms

Execute os demos do sgcToolbar

Os demos EditorShell e LiveStatus 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.

EditorShell

Somente Registrada EditorShell

Uma estrutura de editor com TMemo, com alternâncias, um grupo de opção Esquerda, Centro e Direita, um menu suspenso de Zoom, vínculos com TActionList, o menu de estouro, painéis de linha e coluna e uma alternância Dark. Usa estouro e actions, então exige a edição Registrada ou de Avaliação.

LiveStatus

Uma thread de trabalho simula um download e alimenta um painel de texto, um painel de progresso e um indicador que fica verde, âmbar ou vermelho, com os botões Start e Stop. Compila com a edição Community.

Somente Registrada EditorShellFMX

O demo EditorShell com um TsgcFMXToolbar e um TsgcFMXStatusBar em torno de um TMemo do FireMonkey, somente para Delphi: os mesmos itens, vínculos de action, menu de estouro e painéis de status.

Demos compilados

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

Baixar sgcUI_bin.zip →

Onde o sgcToolbar está incluído

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

sgcToolbar pacote individual

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

Comprar o sgcToolbar → Ver preços →

sgcUI Standard

sgcToolbar, sgcGrid, sgcNavigation 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.sgcToolbar.Community no NuGet) não tem o menu de estouro nem os links de Action.

RecursoCommunity (gratuita)Registrada
Todos os tipos de item, alternâncias, grupos de opção e menus suspensos✓✓
Painéis de texto, de progresso e de indicador✓✓
Atualizações de status thread-safe✓✓
Ícones, glifos, temas, teclado e alça de redimensionamento✓✓
Saída headless em PNG e SVG✓✓
Menu de estouro−✓
Links de Action (Delphi) e Command (.NET)−✓

Frameworks e plataformas suportados

Componentes do sgcToolbar

ComponenteAlvo
TsgcVCLToolbar, TsgcVCLStatusBarDelphi e C++ Builder, VCL (sgcToolbar_VCL)
TsgcFMXToolbar, TsgcFMXStatusBarDelphi e C++ Builder, FireMonkey (sgcToolbar_FMX)
TsgcToolbarItem, TsgcStatusBarPanel, TsgcToolbarModel, TsgcStatusBarModelModelos independentes de framework (sgcToolbar_Model)
TsgcWinFormsToolbar, TsgcWinFormsStatusBar.NET, WinForms
TsgcWpfToolbar, TsgcWpfStatusBar.NET, WPF
TsgcAvaloniaToolbar, TsgcAvaloniaStatusBar.NET, Avalonia
AlvoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLToolbar, TsgcVCLStatusBarWin32 e Win64
Delphi XE6 a 13, FireMonkeyTsgcFMXToolbar, TsgcFMXStatusBarWindows, macOS, iOS, Android e Linux (FMXLinux)
C++ Builder 2007 a 13Barras VCL e FireMonkeyHeaders .hpp gerados e bibliotecas estáticas
Delphi 10.2 a 13, independente de frameworkModelos e renderizador headless de PNG e SVGLinux64, por exemplo para renderizar uma barra de ferramentas em um servidor
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsToolbar, barras WPF e AvaloniaWinForms, WPF e Avalonia

Perguntas frequentes

Sim. SetPanelText, SetProgress e SetIndicator podem ser chamados de qualquer thread, sem Synchronize ou Queue. O modelo protege os valores com um lock e a barra se redesenha na thread principal. Toda outra propriedade é definida a partir da thread principal. Veja Atualizações thread-safe.

Ele cobre as mesmas tarefas: botões, alternâncias, botões suspensos, separadores e rótulos no alto, painéis de texto embaixo. E acrescenta um item espaçador, painéis de progresso e de indicador, setters thread-safe, temas e saída headless. Os seus componentes TActionList e TPopupMenu existentes se encaixam por meio de Action e DropdownMenu.

O menu de estouro e os links de Action dos itens, que no .NET são Command e CommandParameter. Na Community, os itens que não cabem são cortados. Todos os outros recursos, incluindo as atualizações de status thread-safe, os painéis de progresso e de indicador e a saída headless, estão na Community.

Sim. O C++ Builder 2007 a 13 usa as mesmas barras VCL e FireMonkey por meio de headers e bibliotecas gerados, e os demos EditorShell e LiveStatus também acompanham como projetos C++ Builder. A aba de código desta página mostra a mesma barra de ferramentas em Delphi, C++ Builder e C#.

Sim. Todos os tamanhos são pixels lógicos multiplicados pela escala do monitor, e o espaço do ícone tem 16 pixels lógicos, então botões, glifos, barras de progresso e pontos de indicador ficam nítidos em qualquer DPI. O FireMonkey pega as imagens da lista de imagens no tamanho de dispositivo do frame.

Sim. SaveToSVG e SaveToPNG de TsgcToolbarModel e TsgcStatusBarModel desenham as barras sem janela, também no Linux64 a partir do Delphi 10.2, então uma etapa de build pode regenerar as imagens do seu manual a cada versão. Um parâmetro de escala gera imagens nítidas para telas de alto DPI e para impressão.

Ajuda do sgcToolbar

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 sgcToolbar Hoje

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